sql查询各个汉字首字母

先上代码

DROP FUNCTION IF EXISTS `getPY`;
DELIMITER ;;
CREATE FUNCTION `getPY`(in_string VARCHAR(32767)) RETURNS mediumtext CHARSET utf8
BEGIN
DECLARE tmp_str VARCHAR(32767) 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(32767) 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 ;

再说遇到的问题

本人刚开始用的navicat for mysql创建函数。发现将此行代码粘过去后出现错误1357-cant't drop or alter a FUNCTION from another routine。后来明白原因是使用navicat创建函数时会自动添加代码

CREATE DEFINER = CURRENT_USER FUNCTION `NewProc`()RETURNS 

用终端工具进入mysql管理界面粘贴就行了。

sql查询汉字首字母相关推荐

  1. 记录SQL查询汉字、字母、数字

    1.查询汉字及长度 SELECT  *FROM   [表]   WHERE    [列名] LIKE '%[吖-座]%' and  len( [列名])>10 2.查询字母 SELECT  *F ...

  2. sql获取汉字首字母

    转载自:http://www.cnblogs.com/zhouhuitao/archive/2013/01/07/2849682.html create function GetPY(@str var ...

  3. sql 取汉字首字母

    Create function fn_GetPy(@str nvarchar(4000))returns nvarchar(4000) --用于加密--WITH ENCRYPTION as begin ...

  4. MySql中用sql语句实现按汉字首字母排序

    转载自https://blog.csdn.net/hulinyi123456/article/details/79915521 1.mysql 1)按照汉字的拼音排序 如果存储汉字的字段编码使用的是G ...

  5. 按汉字首字母排序(sql语句)

    在sql server中可以直接通过SQL语句实现按汉字首字母排序,比如我们经常用到的"按姓名首字母排序" --把tableName和colName换成自己的就ok了 --按拼音 ...

  6. 按汉字首字母排序(sql语句) 只为收集,本人复制粘贴水寒冰局的

    在sql server中可以直接通过SQL语句实现按汉字首字母排序,比如我们经常用到的"按姓名首字母排序" --把tableName和colName换成自己的就ok了 --按拼音 ...

  7. SQL语句——生成汉字首字母拼音

    sql脚本获取汉字首字母的2种方法: 1. create function GetPY(@str varchar(500)) returns varchar(500) as begin    decl ...

  8. 【如何通过汉字首字母拼写查询数据】mysql数据库汉字首字母获取查询或通过ES插件elasticsearch-analysis-pinyin进行汉字首拼查询

    一.mysql数据库汉字首字母获取查询 1.汉字提取首字母 get_first_pinyin_char: 此函数是将一个中文字符串的第一个汉字转成拼音字母 (例如:"李"-> ...

  9. python 获取首字母_python获取汉字首字母-Go语言中文社区

    应用场景之一:可用于获取名字首字母,在数据库中查询记录时,可以用它来排序输出. from pytz import unicode # 获取汉字首字母 def multi_get_letter(str_ ...

最新文章

  1. 虚幻引擎5:从零开始的蓝图近战AI学习教程
  2. WebShell代码分析溯源(第1题)墨者学院
  3. python ansible_Ansible Python API | linux系统运维
  4. python编程if语法-Python中的if语句——参考Python编程从入门到实践
  5. python使用笔记
  6. php直销二叉树,PHP二叉树递归算法
  7. Android BLE学习(三):编写自己的 BLE蓝牙读写工具(功能仿照nrf master control panel)
  8. php 查询方法all,获取多条:all静态方法
  9. devops项目经理_DevOps:如何避免交接导致项目死亡
  10. DEL: 2012年每月花销
  11. Activity管理笔记
  12. Other | 十招教你找到海量PPT模板
  13. 《机械制造技术基础》常见的问题
  14. react hooks子组件向父组件传参
  15. Qt编写水波进度条控件
  16. AWS abbreviation
  17. 双线macd指标参数最佳设置_MT4双线MACD设置方法及扩展应用
  18. oracle中栓锁,特定的闩锁和互斥场景
  19. 不会吧,现在你都还不知道次世代游戏?花1分钟来了解!
  20. 淘宝、百度软件工程师们小调皮,各种霸气外漏

热门文章

  1. 旅游大数据如何变现?
  2. modal组件 vue_Vue 2.0学习笔记:使用Vue创建Modal组件
  3. 程灵素:我走过山的时候山不说话
  4. 【文献阅读】Probabilistic Terrain Mapping for Mobile Robots With Uncertain Localization
  5. 海亮OJ庆生赛题解(福星)
  6. 项目规划管理 - 2
  7. html qq下高度,怎么知道iframe内容高度
  8. 20180511-Allegro16.6 NC Drill和Optimize drill head travel的关系
  9. 夜天之书 #62 诱导转向的伪开源战略
  10. MAC版画图软件 paintbrush 推荐,类似 windows 上系统自带的画图软件