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

让你的查询支持中文拼音码模糊查询。相关推荐

  1. php 模糊查询数据库,php模糊查询_php 简单内容查询代码 利用sql like模糊查询

    摘要 腾兴网为您分享:php 简单内容查询代码 利用sql like模糊查询,中英翻译,云闪付,远离手机,易订货等软件知识,以及多多,345游戏中心,nodejs,湖北教育云app,吨吨吨表情包,dn ...

  2. php 数据库 like,php模糊查询_php 简单内容查询代码 利用sql like模糊查询

    摘要 腾兴网为您分享:php 简单内容查询代码 利用sql like模糊查询,招联金融,先锋影音,西餐菜谱,融汇财经等软件知识,以及迷你忍者,电e宝app,摄像头检查,旗鱼os,京东掌柜宝app,激光 ...

  3. java中sql模糊查询_模糊查询的sql语句(java模糊查询sql语句)

    模糊查询的sql语句(java模糊查询sql语句) 2020-07-24 11:06:02 共10个回答 假设表名为product,商品名为name,简界为remark.则可如下写:select[na ...

  4. Qt5应用内嵌输入法(支持中文拼音输入、英文输入、数字输入、常用符号输入、手写输入、实体键盘同步)

    声明:部分有参考csdn其他牛人的资料,现将代码共享,共同学习,来源于社会,回馈社会. 一.概述 有用过Qt虚拟键盘的同志都知道,Qt的虚拟键盘确实很强大,特别是Qt5自带的的虚拟键盘,支持多国语言输 ...

  5. 使用SAE KVDB快速实现 支持中文/拼音/全拼/的AutoComplete

    jQueryUI的AutoComplete是一个好东西,但是无奈不支持中文,有好几次想在产品中添加这个功能但都因为用PHP实现一个中文 还要拼音和全拼的索引太过麻烦而最终放弃. 在开发这个火车票交易项 ...

  6. 根据汉字的首字母生产拼音码进行查询

    公司里原先的代码,实在没看懂.... 主要是在Sql中实现 USE [Xpos_refer_database] GO /****** Object: UserDefinedFunction [dbo] ...

  7. ElasticSearch中文分词和模糊查询

    前言 ElasticSearch是一个一个分布式的实时文档存储,每一个字段都可以被索引与搜索,并且能支持PB级别的结构化或者非结构化数据.早期我们应用的全局搜索是简单的SQL模糊查询,为了分担数据库压 ...

  8. python数据库模糊查询_python中数据库like模糊查询方式

    python中数据库like模糊查询方式 在Python中%是一个格式化字符,所以如果需要使用%则需要写成%%. 将在Python中执行的sql语句改为: sql = "SELECT * F ...

  9. mysql 模糊查询用法_mysql进阶(六)模糊查询的四种用法介绍

    mysql中模糊查询的四种用法介绍 这篇文章主要介绍了mysql中模糊查询的四种用法,需要的朋友可以参考下. 下面介绍mysql中模糊查询的四种用法: 1 %: 表示任意0个或多个字符.可匹配任意类型 ...

最新文章

  1. ADMM参考资料(part1)
  2. Service OS maintain ( Reference Object )
  3. LeetCode 739. 每日温度(单调栈)
  4. java下载网页所有图片_java 下载网页,图片 | 学步园
  5. UE4项目的命名规则
  6. C语言——坦克大战(纯控制台显示)
  7. stvd使用中的一些问题
  8. 牡丹-洛阳牡丹:洛阳牡丹
  9. 英语不好、数学不好能自学编程吗?自学编程出路如何?老程告诉你
  10. 郁金香java_郁金香搜索引擎的方案
  11. 【python环境下Z3约束求解器学习笔记】And和Or的用法
  12. one 主格 复数 宾格_主格、宾格、名词所有格
  13. 资产管理之RFID资产管理系统解决方案-RFID资产智能盘点-新导智能
  14. 与ck读音相同的单词有哪些
  15. 5000字长文:电商运营如何做好数据分析?
  16. Python ffmpeg视频压缩
  17. java中jdk的下载与安装
  18. matlab中使用ode方法解范德波尔微分方程的数值解
  19. 网址后面的:2328是什么意思?
  20. 思维题 URAL 1409 Two Gangsters

热门文章

  1. Linux下堆漏洞利用(off-by-one)
  2. 阿里巴巴国际站产品标题的组合和优化方法一览
  3. python串口控制8通道继电器方法笔记
  4. 编写函数 int min(int x ,int y,int z),实现求出三个数中的最小值。要求在main函数中输入三个整数,然后调用min函数,最后将求得的最小值输出。
  5. 理赔实录|有了「安心赔」,理赔不再愁
  6. MATLAB第一节课基本操作与矩阵输入
  7. 幽门杆菌来源_肉毒杆菌毒素和设计移情的艺术
  8. 小程序或者公众号授权给第三方平台流程
  9. 航天软件通过注册:年营收15亿 航天科技控制63.8%股权
  10. ps修改图片中的图片尺寸