讓你的查詢支援中文拼音碼模糊查詢。

2021-09-01 07:41:55 字數 2551 閱讀 7370

需求:在做軟體的過程中,發現不少客戶在做資料檢索時,打漢字怕麻煩,也影響工作效率,要求在查詢時,支援查詢漢字的字母開頭查詢。

做到支援資料庫拼音碼查詢,主要分一下幾步實現:

1.在資料庫中建立乙個sys_spell_dict表,把常用的漢字與拼音字母做為對照資訊儲存到資料庫中。下面以sql server 2005資料庫的sql語言格式編寫實現。

<1>.先建立sys_spell_dict表。

create table [dbo].[sys_spell_dict](

[id] [int] not null,

[char_code] [varchar](4) collate chinese_prc_ci_as not null,

[spell_code] [varchar](1) collate chinese_prc_ci_as null,

constraint [pk_sys_spell_dict] primary key clustered

([char_code] asc

)) on [primary]

<2>.你需要從網上找到常用的字與拼音對照資料匯入資料表中(以下僅簡單示例,常用的字型檔對照6800左右,請自己收集)

[align=center][table]

|id|char_code|spell_code|

|42|阿| a|

|41| 啊| a|

|5975| 錒| a|

|4576| 嗄| g|

|45| 哎| a|

|47| 哀| a|

|46| 唉| a|

|43| 埃| a|

|44| 挨| a|

|5995| 鑀| a|

|4415| 挨| a|

|48| 皚| a|

|49| 癌| a|

[/table][/align]

<3>.編寫轉換函式

create function [dbo].[getspellcodefun] (@in_char varchar(100),@type varchar(2))

returns varchar(100)

asbegin

declare @each_char varchar(10)

declare @each_py varchar(2)

declare @all_py varchar(100)

declare @r int

declare @all_len int

declare @rr int

declare @pyreturn varchar(100)

set @r=1

set @all_len=len(ltrim(rtrim(@in_char)))

set @all_py=''

while (@r<=@all_len)

begin

set @each_char=substring(@in_char,@r,1)

select @rr=count(*) from sys_spell where @each_char=char_code

if @rr>0

select @each_py=spell_code from sys_spell_dict where @each_char=char_code

else

begin

set @each_py=''

end

set @all_py=@all_py+isnull(@each_py,'')

set @r=@r+1

endset @pyreturn= @all_py

return upper( @pyreturn )

end

<4>.中文轉換拼音碼測試

在查詢分析器中,

select dbo.getspellcodefun('中華人民共和國','py')

將回返回『zhrmghg』中文拼音首字母查詢

<5>企業應用開發:1.你可以在寫入資料時,把中文轉成拼音碼存入資料庫中比如spell欄位中(處理程式需要另寫)。

2.寫查詢語句時,利用dbo.getspellcodefun先轉成拼音碼匹配查詢條件。

如人員表中有資料[table]

|id|emp_code|emp_name|

|1|001|比爾|

|2|002|牛頓|

[/table]

你在寫sql時如此寫即可

declare @py nvarchar(50)

set @py='be'

select * from sys_emp where dbo.getspellcodefun(emp_name,'py') like '%'+@py+'%'

查詢時將顯示出中文拼音首字母為be,即emp_name叫比爾的員工。

至此簡單支援資料拼音首字母的示例就講完了,如果你想做以xx拼音字母開頭的查詢,去掉@py前的'%'+即可。

根據漢字的首字母生產拼音碼進行查詢

主要是在sql中實現 use xpos refer database go object userdefinedfunction dbo getletter script date 04 07 2012 09 22 25 set ansi nulls on goset quoted identifi...

根據漢字的首字母生產拼音碼進行查詢

公司裡原先的 實在沒看懂。主要是在sql中實現 use xpos refer database go object userdefinedfunction dbo getletter script date 04 07 2012 09 22 25 set ansi nulls on goset qu...

讓你的軟體支援正體中文

讓你的軟體支援正體中文選擇自 leftfist 的 blog 關鍵字讓你的軟體支援正體中文 出處讓你的軟體支援正體中文 中國台灣 香港的漢字用的是 big5 編碼,而大陸的漢字用的是 gb編碼 gb2312 也好,gbk 也好 簡體中文軟體直接拿到正體中文環境下執行,問題就出來了。怎麼辦呢?我們的軟...