文档章节

数据查询支持中文拼音首字母模糊检索

深圳大道
 深圳大道
发布于 2016/12/29 15:39
字数 603
阅读 3
收藏 0

需求:在做软件的过程中,发现不少客户在做数据检索时,打汉字怕麻烦,也影响工作效率,要求在查询时,支持查询汉字的字母开头查询。
    做到支持数据库拼音码查询,主要分一下几步实现:
    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前的'%'+即可。

本文转载自:http://blog.csdn.net/smartsmile2012/article/details/8488451

共有 人打赏支持
深圳大道
粉丝 3
博文 877
码字总数 0
作品 0
深圳
架构师
私信 提问
汉语转拼音工具、新华字典API——两个支持Python的中文资源

整理 | Jane 出品 | AI科技大本营 【导读】平常为大家推荐的资源中,以英语语言占据大多数。今天 AI科技大本营特别要为大家推荐两个跟中文相关的资源工具。先简单介绍下这两个资源工具都是什...

AI科技大本营
2018/09/10
0
0
2017-10-26 13年后的共鸣-在代码中用中文命名的优势和问题

早在2004年的关于中文编程 - 张玮的专栏 - 博客频道 - CSDN.NET一文中非常有前瞻性地阐述了用中文编写代码对改善可读性的意义, 今日代码可读性已经越来越被业界重视而成为代码审核的一部分....

吴烜
03/04
0
0
Android中文联系人排序及检索补丁的原理

Android中文联系人排序及检索补丁的原理(090819更新) 2009年4月26日,更新了源码和相关文件 很久以前做了这个补丁,有幸的是朋友们都还算喜爱它,没白费功夫。不少朋友来信问它的原理,现在...

LiSteven
2012/12/26
0
0
zg手册 之 Mysql 开发(1)-- 中文全文检索插件开发

目前的中文检索查询方案 基于数据库的模糊匹配(运行时字符串查找,查询速度比较慢) 专有的全文检索引擎(sphinx, lucene等) 我曾经遇到一个项目,数据量在百万级别,不需要高级的全文检索...

东昕
2014/06/02
0
0
汉字转拼音工具JPinyin的介绍和使用示例

汉字转拼音的开源工具类包,已经出现过好几个,比如:Pinyin4J、Jpinyin等。本文主要结合JPinyin汉字转拼音的Java开源类库,给出相关的介绍和使用示例。 Jpinyin介绍 JPinyin是一个汉字转拼音...

王孟君
2016/11/13
1K
5

没有更多内容

加载失败,请刷新页面

加载更多

jenkins安装

https://my.oschina.net/u/593517/blog/1797968 jenkins 安装 https://my.oschina.net/u/593517/blog/3028175 GIT 安装 https://my.oschina.net/u/593517/blog/3028179 maven 安装 插件安装 ......

Gm_ning
15分钟前
1
0
小言服务端解决方案-监控

框架保证方向,整体包容细节 为保证服务端运行平稳正常,owner应使得系统应保有相应的监控:系统监控,业务监控。而服务运行的平稳高效是否有保障跟监控粒度又成直接的正比关系。本文仅针对开...

重城重楼
27分钟前
0
0
搜索引擎(Elasticsearch搜索详解)

学完本课题,你应达成如下目标: 掌握ES搜索API的规则、用法。 掌握各种查询用法 搜索API 搜索API 端点地址 GET /twitter/_search?q=user:kimchy GET /twitter/tweet,user/_search?q=user:...

这很耳东先生
50分钟前
7
0
浅谈如何减少GC的次数

GC会stop the world。会暂停程序的执行,带来延迟的代价。所以在开发中,我们不希望GC的次数过多。 本文将讨论如何在开发中改善各种细节,从而减少GC的次数。 (1)对象不用时最好显式置为 Nu...

浮躁的码农
52分钟前
1
0
jpa 自定义返回对象

任何ORM框架都少不了开放自定义sql的问题。jpa自然也不例外,很多场景需要写复杂sql的。 首先定义一个方法签名,然后打上@Query注解。像下面这样,需要注意nativeQuery,这个表示query中的字...

朝如青丝暮成雪
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部