シナリオ:
ユーザーが入力した名前のキーワードでユーザーを検索する必要があります。ユーザーはキーワード「x」を入力してユーザーを検索します (データはテーブル [名前フィールド] またはメモリ [リスト
要件:
結果の並べ替えは次のようになります:
x
xia
xiao
yx
つまり:
文字 x を含む結果が表示される必要があります
最初の文字に一致する結果が最初にランク付けされる必要があります (x で始まるなど)
条件2と同じ 前提として、短い結果が最初にランクされる(例えば、xはxiaの前にランクされる)
create function [dbo].[fn_getpy2](@Str varchar(500)='') returns varchar(500) as begin declare @strlen int,@return varchar(500),@ii int declare @n int,@c char(1),@chn nchar(1) select @strlen=len(@str),@return='',@ii=0 set @ii=0 while @ii<@strlen begin select @ii=@ii+1,@n=63,@chn=substring(@str,@ii,1) if @chn>'z' select @n = @n +1 ,@c = case chn when @chn then char(@n) else @c end from( select top 27 * from ( select chn = '吖' union all select '八' union all select '嚓' union all select '咑' union all select '妸' union all select '发' union all select '旮' union all select '铪' union all select '丌' --because have no 'i' union all select '丌' union all select '咔' union all select '垃' union all select '嘸' union all select '拏' union all select '噢' union all select '妑' union all select '七' union all select '呥' union all select '仨' union all select '他' union all select '屲' --no 'u' union all select '屲' --no 'v' union all select '屲' union all select '夕' union all select '丫' union all select '帀' union all select @chn) as a order by chn COLLATE Chinese_PRC_CI_AS ) as b else set @c=@chn set @return=@return+@c end return(@return) end