DELIMITER ;;

CREATE  FUNCTION `getPY`(in_string VARCHAR(65534)) RETURNS mediumtext CHARSET utf8

BEGIN

DECLARE tmp_str VARCHAR(65534) charset gbk DEFAULT '' ; #截取字符串,每次做截取后的字符串存放在该变量中,初始为函数参数in_string值

DECLARE tmp_len SMALLINT DEFAULT 0;#tmp_str的长度

DECLARE tmp_char VARCHAR(2) charset gbk DEFAULT '';#截取字符,每次 left(tmp_str,1) 返回值存放在该变量中

DECLARE tmp_rs VARCHAR(65534) charset gbk DEFAULT '';#结果字符串

DECLARE tmp_cc VARCHAR(2) charset gbk DEFAULT '';#拼音字符,存放单个汉字对应的拼音首字符

SET tmp_str = in_string;#初始化,将in_string赋给tmp_str

SET tmp_len = LENGTH(tmp_str);#初始化长度

WHILE tmp_len > 0 DO #如果被计算的tmp_str长度大于0则进入该while

SET tmp_char = LEFT(tmp_str,1);#获取tmp_str最左端的首个字符,注意这里是获取首个字符,该字符可能是汉字,也可能不是。

SET tmp_cc = tmp_char;#左端首个字符赋值给拼音字符

IF LENGTH(tmp_char)>1 THEN#判断左端首个字符是多字节还是单字节字符,要是多字节则认为是汉字且作以下拼音获取,要是单字节则不处理。

SELECT ELT(INTERVAL(CONV(HEX(tmp_char),16,10),0xB0A1,0xB0C5,0xB2C1,0xB4EE,0xB6EA,0xB7A2,0xB8C1,0xB9FE,0xBBF7,0xBFA6,0xC0AC

,0xC2E8,0xC4C3,0xC5B6,0xC5BE,0xC6DA,0xC8BB,0xC8F6,0xCBFA,0xCDDA ,0xCEF4,0xD1B9,0xD4D1),

'A','B','C','D','E','F','G','H','J','K','L','M','N','O','P','Q','R','S','T','W','X','Y','Z') INTO tmp_cc; #获得汉字拼音首字符

END IF;

SET tmp_rs = CONCAT(tmp_rs,tmp_cc);#将当前tmp_str左端首个字符拼音首字符与返回字符串拼接

SET tmp_str = SUBSTRING(tmp_str,2);#将tmp_str左端首字符去除

SET tmp_len = LENGTH(tmp_str);#计算当前字符串长度

END WHILE;

RETURN tmp_rs;#返回结果字符串

END;;

DELIMITER ;

效果图:

--将中文字符串转化成文字首拼音的组合

create function dbo.fun_getPY(@str nvarchar(4000))

returns nvarchar(4000)

as

begin

declare @word nchar(1),@PY nvarchar(4000)

set @PY=''

while len(@str)>0

begin

set @word=left(@str,1)

--如果非汉字字符,返回原字符

set @PY=@PY+(case when unicode(@word) between 19968 and 19968+20901

then (select top 1 PY from (

select 'A' as PY,N'骜' as word

union all select 'B',N'簿'

union all select 'C',N'错'

union all select 'D',N'鵽'

union all select 'E',N'樲'

union all select 'F',N'鳆'

union all select 'G',N'腂'

union all select 'H',N'夻'

union all select 'J',N'攈'

union all select 'K',N'穒'

union all select 'L',N'鱳'

union all select 'M',N'旀'

union all select 'N',N'桛'

union all select 'O',N'沤'

union all select 'P',N'曝'

union all select 'Q',N'囕'

union all select 'R',N'鶸'

union all select 'S',N'蜶'

union all select 'T',N'箨'

union all select 'W',N'鹜'

union all select 'X',N'鑂'

union all select 'Y',N'韵'

union all select 'Z',N'咗'

) T

where word>=@word collate Chinese_PRC_CS_AS_KS_WS

order by PY ASC) else @word end)

set @str=right(@str,len(@str)-1)

end

return @PY

end

GO

效果图

很实用的两个自定义函数,积累总是一点一点的。

mysql汉字对应字段_mysql和SqlServer 中取得汉字字段的各汉字首字母相关推荐

  1. 在Java中,如何使一个字符串的首字母变为大写

    问题:在Java中,如何使一个字符串的首字母变为大写 我使用Java去获取用户的字符串输入.我尝试使他们输入的第一个字符大写 我尝试这样: String name;BufferedReader br ...

  2. wps中,点空格或者enter之后首字母变大写问题

    问题: wps中,点空格或者enter之后首字母变大写问题 解决: 文件->选项->取消勾选"键入时自动进行句首字母大写更正"

  3. mysql 8.0 直方图_MySQL 8.0 中统计信息直方图的尝试

    直方图是表上某个字段在按照一定百分比和规律采样后的数据分布的一种描述,最重要的作用之一就是根据查询条件,预估符合条件的数据量,为sql执行计划的生成提供重要的依据 在MySQL 8.0之前的版本中,M ...

  4. mysql查询语句 变量_mysql查询语句中用户变量的使用

    先上代码吧 SELECT `notice`.`id` , `notice`.`fid` , `notice`.`has_read` , `notice`.`notice_time` , `notice ...

  5. mysql json 创建索引_MySQL · 最佳实践 · 如何索引JSON字段

    概述 MySQL从5.7.8起开始支持JSON字段,这极大的丰富了MySQL的数据类型.也方便了广大开发人员.但MySQL并没有提供对JSON对象中的字段进行索引的功能,至少没有直接对其字段进行索引的 ...

  6. mysql操作json优点和缺点_MYSQL 5.7中的本机JSON支持:MYSQL中JSON数据类型的优缺点是什么?...

    在MySQL 5.7中,新的数据类型用于在JSON表中存储JSON数据. 添加. 显然,这将是MySQL的巨大变化. 他们列出了一些好处 Document Validation - Only vali ...

  7. sqlserver中,sql语句,按照汉字拼音首字母排序

    sqlserver 中: select  * from table order by userName collate Chinese_PRC_CS_AS_KS_WS 注释: collate:指的是定 ...

  8. mysql数据库 查找数据类型_Mysql查询数据库表结构以及字段类型并展示

    1.建表语句sys_user CREATE TABLE `sys_user` ( `id` varchar(32) NOT NULL COMMENT '编号', `dept_id` varchar(3 ...

  9. mysql数据复制改一个字段_mysql表复制和修改部分字段

    今天在工作中,需要造大量的加数据,1000多条数据如果都是手工输入的话,那么我今天不要干别的了,就造吧! 当时手工操作重复的事情,对程序员来说,是一件很丢人的事情,所以就上网查了一下,需要用到两个知识 ...

最新文章

  1. 程序员福音-定时提醒bat
  2. 打造自己的树莓派监控系统1--CPU监控-matplotlib显示数据
  3. [javaEE] response实现图片下载
  4. Python版本OpenCV安装配置及简单实例
  5. Discuz! Ucenter API for JAVA jar包和测试代码
  6. php 浮点数 模运算,同余与模运算
  7. XML入门经典(第4版)pdf
  8. python第五篇:Linux上将txt导入mysql
  9. 流媒体技术基础-流媒体文件格式
  10. 前端 关于汇率的计算
  11. linux下的企业级DNS服务器的操作和加速
  12. alios things开发板_AliOS Things这个操作系统怎么样?
  13. MATLAB 求解积分上、下限含有未知数的方程
  14. 屏蔽按Esc、Enter和Alt+F4键时退出
  15. python字典增加方法_python增加字典项的方法
  16. PostgreSQL数据库查询——scan.l分析
  17. Unity3D AssetStore 外部工具下载
  18. 动易的默认数据库、用户和密码、认证码大全还有找后台方法
  19. 不少人都想了解网络安全培训内容有哪些?这篇文章会很详细的告诉你
  20. Co-LncRNA:lncRNA与蛋白编码基因的共表达网络数据库

热门文章

  1. V1.10 Research as a career
  2. JDK下载过慢的问题解决方案
  3. ESP32开发路程WIFI篇——极简连接WIFI,模拟设备连接阿里云,ESP32连接阿里云
  4. 第十七届全国大学智能车竞赛赛场合影集锦
  5. 给网站添加悬浮音乐播放器
  6. 显示“Hello World”并转换为语音
  7. 元宇宙场景技术实践|实现“虚拟人”自由
  8. 根据SNP的位置从基因组提取上下游序列
  9. 简要分析网络三层架构(核心层、汇聚层、接入层)
  10. 无需设置路由器,无需公网ip 实现永久免费内网穿透