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 按拼音模糊搜索汉字_数据查询支持中文拼音首字母模糊检索的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [vue] v-model是什么?有什么
- 下一篇: CIF、DCIF、D1分辨率