一個效率很高的漢字轉(zhuǎn)拼音首字母的函數(shù)

場景:

需要通過用戶輸入的姓名關(guān)鍵字來搜索用戶。用戶輸入關(guān)鍵字’x’來搜索用戶(數(shù)據(jù)來源于表[Name字段中]或內(nèi)存[List]中)

要求:

得到的結(jié)果排序應(yīng)為:

  • x

  • xia

  • xiao

  • yx

即:

包含x字母的結(jié)果均應(yīng)顯示出來

首字母匹配的結(jié)果應(yīng)該排在前面(如x開頭)

在條件2相同的前提下更短的結(jié)果應(yīng)排在前面(如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'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?'發(fā)'  ?????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
? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊11 分享