漢語拼音首字母模糊化查詢

2021-06-20 15:46:09 字數 1406 閱讀 4595

在sql中建立使用者自定義拼音函式:

create function f_getpy(@str nvarchar(400))

returns nvarchar(4000)

asbegin

declare @strlen int,@re nvarchar(4000)

declare @t table(chr nchar(1) collate chinese_prc_ci_as,letter nchar(1))

insert @t select '吖','a' union all select '八','b'

union all select '嚓','c' union all select '咑','d'

union all select '妸','e' union all select '發','f'

union all select '旮','g' union all select '鉿','h'

union all select '丌','j' union all select '咔','k' 

union all select '垃','l' union all select '嘸','m'

union all select '拏','n' union all select '噢','o'

union all select '妑','p' union all select '七','q'

union all select '呥','r' union all select '仨','s'

union all select '他','t' union all select '屲','w'

union all select '夕','x' union all select '丫','y'

union all select '帀','z'

select @strlen=len(@str),@re='

while @strlen>0

begin

select top 1 @re=letter+@re,@strlen=@strlen-1

from @t a where chr<=substring(@str,@strlen,1)

order by chr desc

if @@rowcount=0

select @re=substring(@str,@strlen,1)+@re,@strlen=@strlen-1

endreturn(@re)

endgo

--測試

select dbo.f_getpy('東莞市') as 東莞市,dbo.f_getpy('ab中c國人') as 中國人

--以後查詢的時候,就能夠呼叫上面的函式來實現漢字模糊查詢

select * from 表 where dbo.f_getpy(字段)='zgyh'

SQL按漢語拼音首字母排序

以常用到的省的資料表 province 為例,其中name欄位為省的名稱,sql語句如下 1 select isnull b.py,upper left a.name,1 as py 2,a.name 3from province 4a 5left outer join 6 select a as ...

取的漢語拼音首字母解決思路

作為中國人,漢語拼音是我們的重要工具,在業務實現的時候,加入通用的漢語拼音首字母檢索功能非常重要,目前好多人通過外部的dllg來實現,有的人也用七八千記錄的漢字對照表來解決。有些dll作的太粗造,有的呢。在unicode下失效,庫表的方法很苯,執行效率太差,這些都不是長遠之計。其實漢字編碼並是特別複...

vue漢語轉拼音首字母

漢語轉拼音首字母 建立pinyin.js import vue from vue var strchinesefirstpy 此處收錄了375個多音字 var omultidiff 呼叫的方法 vue.prototype.makepy function str var pinyin for var ...