日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 按拼音模糊搜索汉字_数据查询支持中文拼音首字母模糊检索

發布時間:2023/12/9 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 按拼音模糊搜索汉字_数据查询支持中文拼音首字母模糊检索 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

做到支持數據庫拼音碼查詢,主要分一下幾步實現:

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左右,請自己收集)

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

<3>.編寫轉換函數

CREATE FUNCTION [dbo].[getSpellCodeFun] (@in_char VARCHAR(100),@type VARCHAR(2))

RETURNS VARCHAR(100)

AS

BEGIN

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

end

set @pyreturn= @all_py

return upper( @pyreturn )

END

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

在查詢分析器中,

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

將回返回‘ZHRMGHG’中文拼音首字母查詢

<5>企業應用開發:1.你可以在寫入數據時,把中文轉成拼音碼存入數據庫中比如Spell字段中(處理程序需要另寫)。

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

如人員表中有數據id

emp_code

emp_name

1

001

比爾

2

002

牛頓

你在寫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前的'%'+即可。

總結

以上是生活随笔為你收集整理的java 按拼音模糊搜索汉字_数据查询支持中文拼音首字母模糊检索的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。