• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > 一个效率很高的汉字转拼音首字母的函数

一个效率很高的汉字转拼音首字母的函数

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了代码片段,代码分享,PHP代码分享,Java代码分享,Ruby代码分享,Python代码分享,HTML代码分享,CSS代等相关知识,希望本文的分享对您有所帮助
场景:

需要通过用户输入的姓名关键字来搜索用户。用户输入关键字'x'来搜索用户(数据来源于表[Name字段中]或内存[List]中)

要求:

得到的结果排序应为:

  • x

  • xia

  • xiao

  • yx

即:

包含x字母的结果均应显示出来

首字母匹配的结果应该排在前面(如x开头)

在条件2相同的前提下更短的结果应排在前面(如x排在xia前面)

create function [dbo].[fn_getpy2](@Str varchar(500)='')
returns varchar(500)
as
begin
 declare @strlen int,@return varchar(500),@ii int
 declare @n int,@c char(1),@chn nchar(1)

 select @strlen=len(@str),@return='',@ii=0
 set @ii=0
 while @ii<@strlen
 begin
  select @ii=@ii+1,@n=63,@chn=substring(@str,@ii,1)
  if @chn>'z'
  select @n = @n +1
     ,@c = case chn when @chn then char(@n) else @c end
   from(
    select top 27 * from (
     select chn = '吖'
     union all select '八'
     union all select '嚓'
     union all select '咑'
     union all select '妸'
     union all select '发'
     union all select '旮'
     union all select '铪'
     union all select '丌'  --because have no 'i'
     union all select '丌'
     union all select '咔'
     union all select '垃'
     union all select '嘸'
     union all select '拏'
     union all select '噢'
     union all select '妑'
     union all select '七'
     union all select '呥'
     union all select '仨'
     union all select '他'
     union all select '屲'  --no 'u'
     union all select '屲'  --no 'v'
     union all select '屲'
     union all select '夕'
     union all select '丫'
     union all select '帀'
     union all select @chn) as a
    order by chn COLLATE Chinese_PRC_CI_AS 
   ) as b
  else set @c=@chn
  set @return=@return+@c
 end
 return(@return)
end
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 更新数据库中表的统计信息
  • MySQL 存储过程中执行动态 SQL 语句
  • 金额大写转小写SQL
  • 财政年度表之建表约束
  • mysql查询今天,昨天,近7天,近30天,本月,上一月数据方法
  • 统计数据库每天的数据增长量
  • MySql批量插入性能优化
  • 各大数据库分段查询技术的实现方式
  • SQL 循环插入1000条数据
  • 删除SQL 某个表中重复的记录

相关文章

  • 2018-12-05使用MySQL命令行修改密码
  • 2017-05-11关于mysql innodb count(*)速度慢的解决办法
  • 2017-05-11获取MySQL的表中每个userid最后一条记录的方法
  • 2017-11-28MySQL中特定格式的字符串部分完全匹配查询
  • 2018-12-05mysql数值函数
  • 2017-05-11Lost connection to MySQL server at 'reading authorization packet', system error: 0
  • 2018-12-05sql server中批量插入与更新两种解决方案分享(存储过程)
  • 2018-12-05小编带你深入解析SQL Server索引的原理
  • 2018-12-05oracle 触发器 实现出入库
  • 2018-12-05mysql innodb 配置 raw,实现linux下绕过内核缓冲区,实现直接I/O

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • SQLServer 数据库开发顶级技巧
    • Mysql修改默认数据目录
    • 在程序中压缩sql server2000的数据库备份文件的代码
    • Oracle 安装 Error in writing to directory /tmp/OraInstall 错
    • DDL
    • 优化Oracle库表设计的若干方法
    • 简单讲解对WordPress数据库的认识及使用命令
    • 几个常用的mysql截取函数
    • 基于mssql导mysql遇到的问题
    • MySQL通过触发器解决数据库中表的行数限制的需求

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有