目录

  • 一、函数
  • 二、执行遇到问题
  • 三、如何使用
  • 四、常见的函数

一、函数

这里是通过函数调用进行获取汉字的拼音首字母。

DELIMITER $$
CREATE FUNCTION `pinyin`(P_NAME VARCHAR(255)) RETURNS varchar(255) CHARSET utf8
DETERMINISTIC
BEGINDECLARE V_COMPARE VARCHAR(255);DECLARE V_RETURN VARCHAR(255);DECLARE I INT;SET I = 1;SET V_RETURN = '';#循环截取字符while I < LENGTH(P_NAME) doSET V_COMPARE = SUBSTR(P_NAME, I, 1);IF (V_COMPARE != '') THEN#字符串拼接SET V_RETURN = CONCAT(V_RETURN, to_frist_pinyin(V_COMPARE));END IF;SET I = I + 1;end while;IF (ISNULL(V_RETURN) or V_RETURN = '') THENSET V_RETURN = P_NAME;END IF;RETURN V_RETURN;
END$$CREATE FUNCTION `to_frist_pinyin`(P_NAME VARCHAR(255)) RETURNS varchar(255) CHARSET utf8
BEGINDECLARE V_RETURN VARCHAR(255);DECLARE V_FIRST_CHAR VARCHAR(255);#这块主要意思是假如传入的是英文串的话,只取首字母set V_FIRST_CHAR =UPPER(LEFT(CONVERT(P_NAME USING gbk),1));set V_RETURN = V_FIRST_CHAR;
#如果是这些特殊符号,直接返回#
IF V_FIRST_CHAR in ('(',')','《','》')
THEN SET V_RETURN = '';
#两个不相等只有一个情况,V_FIRST_CHAR是中文汉字或者中文符号。
elseif LENGTH( V_FIRST_CHAR) <> CHARACTER_LENGTH( V_FIRST_CHAR )then  SET V_RETURN = ELT(INTERVAL(CONV(HEX(left(CONVERT(P_NAME USING gbk),1)),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');
#如果是下面的直接原样输出
elseif V_FIRST_CHAR in ('A','B','C','D','E','F','G','H','J','K','L','M','N','O','P','Q','R','S','T','W','X','Y','Z','1','2','3','4','5','6','7','8','9','0','*','+','-','=','/','\\','{','}','[',']','(',')','(',')')then SET V_RETURN = V_RETURN;
#其他的输出#
else SET V_RETURN = '#';
END IF;#为空的话输出#RETURN IFNULL(V_RETURN,'#');
END$$
DELIMITER ;

二、执行遇到问题


设置为1,创建完后,可以再设置回去。

set global log_bin_trust_function_creators = 1;

简单介绍一下,当二进制日志启用后,这个变量就会启用。它控制是否可以信任存储函数创建者,不会创建写入二进制日志引起不安全事件的存储函数。如果设置为0(默认值),用户不得创建或修改存储函数,除非它们具有除CREATE ROUTINE或ALTER ROUTINE特权之外的SUPER权限。 设置为0还强制使用DETERMINISTIC特性或READS SQL DATA或NO SQL特性声明函数的限制。 如果变量设置为1,MySQL不会对创建存储函数实施这些限制。

三、如何使用

将某个表当中的按照名称给pym字段赋值。

UPDATE therapy_standard a SET name_pym = pinyin ( NAME );
SELECT pinyin ( '张三abc' );

四、常见的函数

1、CONVERT()提供一个在不同字符集之间转换数据的方法。
用法:CONVERT('张' USING gbk)
2、LEFT()函数是一个字符串截取函数,它返回具有指定长度的字符串的左边部分。
用法:LEFT(Str,length)

  • str:一个字符串;
  • length:想要截取的长度,是一个正整数;

注意这里的length是字符,也就是不管str包含的是汉字还是数字或者是字母都算是一个字符。

3、upper()函数将所有字符串更改为大写,然后返回。
4、LENGTH()函数:查看某字符串的长度,这里的单位是字节。

  • utf8编码下,一个汉字三个字节,一个数字或字母一个字节。
  • gbk下,一个汉字两个字节,一个数字或字母一个字节。

5、CHARACTER_LENGTH()函数:函数返回字符串的长度,单位为字符。

  • 不管汉字还是数字或者是字母都算是一个字符
    6、HEX()函数:返回十六进制值的字符串表示形式。注意:并不是十进制转化为十六进制数,而是转化为字符串。。。

7、UNHEX() 函数: 每对十六进制数字转化为一个字符。
8、conv()函数:这个函数是用来将字符转换进制的,例如将a转成ASCII码(换个说法就是将16进制的a换成10进制)那就直接用conv(hex(‘a’),16,10)
9、INTERVAL()函数:用法INTERVAL(N,N1,N2,N3,…),其中,N是要判断的数值,N1,N2,N3,…是分段的间隔。

SELECT id,percent,INTERVAL(percent,25,50) from test;

意思大概是这样的:percent字段参与判断,设定的区段是25,50,那么小于25的值返回0,大于等于25小于50的值返回1,大于等于50的值返回2。
10、INTERVAL关键字:查询当前时间之前2个小时的日期:SELECT NOW()-INTERVAL '2' HOUR;
11、ELT()函数:ELT(N,str1,str2,str3,…)
如果N = 1,则返回str1;如果N = 2,则返回str2,依此类推。 如果N小于1或大于参数个数,则返回NULL。 ELT是FIELD的补充。

MySQL获取汉字的拼音首字母相关推荐

  1. php mysql 拼音首字母,Mysql应用MySQL查询汉字的拼音首字母实例教程

    <Mysql应用MySQL查询汉字的拼音首字母实例教程>要点: 本文介绍了Mysql应用MySQL查询汉字的拼音首字母实例教程,希望对您有用.如果有疑问,可以联系我们. 导读:最好的方法还 ...

  2. C# 获取汉字的拼音首字母(转)

    原文:https://blog.csdn.net/younghaiqing/article/details/62417269 一种是把所有中文字符集合起来组成一个对照表:另一种是依照汉字在Unicod ...

  3. C# 获取汉字的拼音首字母和全拼(含源码)

    C# 获取汉字的拼音首字母 一种是把所有中文字符集合起来组成一个对照表:另一种是依照汉字在Unicode编码表中的排序来确定拼音的首字母.碰到多音字时就以常用的为准(第一种方法中可以自行更改,方法为手 ...

  4. (转)C# 获取汉字的拼音首字母和全拼(含源码)[A]

    https://blog.csdn.net/younghaiqing/article/details/62417269 C# 获取汉字的拼音首字母 一种是把所有中文字符集合起来组成一个对照表:另一种是 ...

  5. java汉字转换拼音,获取汉字串拼音首字母

    首先要下载  pinyin4j  的jar包 import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j ...

  6. java汉字的拼音首字母_Java 获取汉字的拼音首字母

    Java 获取汉字的拼音首字母: pom.xml 引用 pinyin4j 包: com.belerweb pinyin4j 2.5.0 PinyinUtil 类: package com.xxx.co ...

  7. delphi读音_delphi中获取汉字的拼音首字母

    这段代码处理范围比较广,对于双单字,较偏的字也都能处理,是目前比较流行且全面的在delphi中获取汉字的拼音首字母的代码. 1.以下代码段直接复制在代码里即可. {$R *.dfm} py: arra ...

  8. 获取汉字的拼音首字母

    利用汉字拼音首字母进行快速检索,效率比直接检索汉字高很多.在ASCII编码中,汉字是按拼音首字母的顺序进行编码的,也就是说拼音首字母相同的汉字的编译是连续的.相对集中的.那么就可以通过比较汉字ASCI ...

  9. java获取汉字的拼音首字母_java获取汉字的拼音首字母

    import java.io.UnsupportedEncodingException; /** * 取得给定汉字串的首字母串,即声母串 * Title: ChineseCharToEn * @dat ...

  10. js获取汉字的拼音首字母

    前言 参考<JS获取中文拼音首字母,并通过拼音首字母快速查找页面内的中文内容> 自己写的在线示例

最新文章

  1. DbExpressionBinding requires an input expression with a collection ResultType. 参数名: input
  2. 杨鹏谈世纪佳缘推荐算法:基于Spark GraphX,弃GBDT和LR用FM
  3. python封装一个效率极高的 批量更新、插入合一的工具
  4. Java常见的几种设计模式
  5. extjs 点击下拉框三角形触发事件_省市县三级联动下拉框的具体实现
  6. linux开放mysql远程连接_Linux开启MySql远程连接
  7. 中国石化:五年要建充换电站5000座
  8. CentOS 7运维管理笔记(5)----源代码安装Apache 2.4,搭建LAMP服务器
  9. 5 Ways to Speed Up Your Rails App
  10. 浅析三点SEO理论到底带给了我们什么
  11. windows 10 远程桌面 第一次登录之前 你必须更改密码 请更新密码
  12. 数据分析师python面试题_数据分析师面试题
  13. 深入浅出最优化(2) 步长的计算方法
  14. VR场景优化,知易行难
  15. 【Unity3D】Unity3D发布错误:could not allocate memery:system out of memery!
  16. 4 Flask开发进阶:记下一次级联删除的报错:Cannot delete or update a parent row: a foreign key constraint fails
  17. [附源码]计算机毕业设计JAVAjsp基于web的停车收费管理系统
  18. 仙剑奇侠传一怎么修改服务器,仙剑奇侠传1秘籍_仙剑1作弊方法大全
  19. Camtasia Studio录制屏幕字迹不清晰的原因
  20. Win8 Metro(C#)数字图像处理--2.70修正后的阿尔法滤波器

热门文章

  1. Python 爬取微博热搜页面
  2. 不同/相同型号的路由器设置无线中继
  3. WIN10合并磁盘扩展区是灰色的
  4. Excel数据透视表怎么做
  5. ECharts饼状图legend显示Value所占百分比
  6. java 1.5.0 gcj_Ubuntu下GCJ的使用
  7. python中match用法_Python3.9.1中使用match方法详解
  8. java微信公众号授权登录
  9. wps怎么只删除本页的页眉_WPS如何删除文件中某一页的页眉
  10. the JDBC Driver has been forcibly unregistered;tomcat总是memory leak问题 ,为了防止内存泄漏,jdbc驱动程序已强制取消注册