需求:在做软件的过程中,发现不少客户在做数据检索时,打汉字怕麻烦,也影响工作效率,要求在查询时,支持查询汉字的字母开头查询。

做到支持数据库拼音码查询,主要分一下几步实现:

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 按拼音模糊搜索汉字_数据查询支持中文拼音首字母模糊检索相关推荐

  1. mysq根据首字母模糊检索,拼音首字母模糊查询名称

    Mysql 数据库根据拼音首字母模糊查询名称 前言 一.导入数据库 二.使用SQL进行查询 总结 前言 当我们的项目运行了一段时间,突然增加个需求,要按照内容标题的首字母进行查询时,这时我们只需导入一 ...

  2. python获取字符串首字母_[Python] Python 获取中文的首字母 和 全部拼音首字母

    原博文 2019-07-08 04:18 − Python 获取中文的首字母 和 全部拼音首字母 代码如下: import pinyin def getStrAllAplha(str): return ...

  3. 让你的查询支持中文拼音码模糊查询。

    需求:在做软件的过程中,发现不少客户在做数据检索时,打汉字怕麻烦,也影响工作效率,要求在查询时,支持查询汉字的字母开头查询. 做到支持数据库拼音码查询,主要分一下几步实现: 1.在数据库中建立一个sy ...

  4. mysql 汉字_让MySQL支持中文

    这两天在学习webpy,把webpy的一个blog例子扒下来学习一下,默认创建的table当存入中文的时候是乱码,研究了一下这个问题. 1,创建table的时候就使用utf8编码 举个例子: 1 cr ...

  5. JAVA WEB 对返回数据进行按中文名称首字母A~Z升序排序

    对数据按中文名称A~Z进行升序排序 Collections.sort(ListName, new Comparator<ModelClassName>() {Collator collat ...

  6. 通过拼音模糊搜索汉字的功能实现

    一.原由 前一段时间用php实现通讯录系统,需要用到拼音查找汉字功能,匹配通讯录的姓名字段,于是在网上搜索已有的开源代码,下面总结和分析一下思路和具体实现. 二.思路 查找了网上的多种解决方案,大致分 ...

  7. java 拼音模糊查询_java实现首字母模糊查询的功能

    ①,要实现首字母模糊匹配,首先我们需要得到你要搜索内容的首字母,对于java来说,有一个非常实用的包:pinyin4j.jar. 这个拼音包中的PinyinHelper 方法可以得到String的首字 ...

  8. java 首字母检索_java实现首字母模糊查询的功能

    ①,要实现首字母模糊匹配,首先我们需要得到你要搜索内容的首字母,对于java来说,有一个非常实用的包:pinyin4j.jar. 这个拼音包中的PinyinHelper 方法可以得到String的首字 ...

  9. Oracle——根据拼音首字母模糊查询某个字段

    前言 Oracle数据库模糊查询数据,可以用like关键字: 但是,业务上有时候需要根据拼音首字母模糊查询某个字段,这时候考虑的点就比较多了 问题解决 解决方法有3种: 1. 表中添加一个字段表示拼音 ...

  10. .net core通过PinYinConverterCore实现汉字转拼音,获取中文字符串首字母

    文章目录 一.事故现场 二.解决方法 1.安装方法 2.代码示例 #中文转拼音 #获取中文字符串首字母 一.事故现场 项目之前使用的.net framework,可以通过引用 Microsoft.In ...

最新文章

  1. 如何用bat文件快速计算项目代码行数
  2. Linux-Shell 快捷键
  3. 公文字体字号标准2020_公文格式的数字顺口溜(收藏)
  4. 华硕h410csm怎么开启_主板BIOS中的launch CSM选项灰色无法更改的解决方法
  5. Sun Java认证
  6. 持有1000枚以上比特币的巨鲸地址数量有所下降
  7. Array.prototype.slice.call()如何工作?
  8. Android Studio - 如何更改Android SDK路径
  9. iphone中扫描wifi热点
  10. 电子技术课程设计—交通灯控制系统设计
  11. No certificate for team ‘‘ matching ‘iPhone Distribution: VOVA TECH LIMITED ()‘ Select a different s
  12. Vue3-歌词根据时间自动滚动
  13. Selenium 2.0的由来及设计架构
  14. libusb介绍及简单使用
  15. Oracle开发实战学习
  16. Ios王者微信抢先服务器,王者荣耀:iOS微信用户抢先体验!国服出装铭文,点击一键查看!...
  17. 系统学习Pytorch笔记三:Pytorch数据读取机制(DataLoader)与图像预处理模块(transforms)
  18. 梁漱溟:世界文化的未来,就是中国文化的复兴
  19. 武汉理工大学计算机考研排名2015,武汉理工大学和南京理工大学计算机研究生比较一下...
  20. img图片下面有间隙的6种解决方案

热门文章

  1. OCJP认证该不该考?
  2. linux安全擦除ssd命令,如何在不破坏SSD的情况下安全擦除SSD | MOS86
  3. 推荐几个好用的插件(Edge)
  4. f-stack 编译测试笔记
  5. 颜色rgba、16进制、10进制互相装换
  6. 数学建模安装matlab,数学建模神器——Matlab下载安装教程
  7. 寻找阿姆斯特朗数(北理乐学)
  8. 知识图谱——TransE模型原理
  9. JavaScript计算器(加减乘除完善)
  10. java删除文件夹及其内部文件