mysql 中如何取得汉字字段的各汉字首字母_Mysql

DROP FUNCTION IF EXISTS `getPY`;
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 ;

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索mysql
首字母
mysql 取字段 汉字、mysql 汉字字段查不到、mysql获取汉字首字母、mysql 汉字拼音首字母、mysql 取汉字首字母,以便于您获取更多的相关知识。

时间: 2024-10-23 09:02:25

mysql 中如何取得汉字字段的各汉字首字母_Mysql的相关文章

MySQL 中查找含有目标字段的表的方法_Mysql

复制代码 代码如下: SELECT TABLE_SCHEMA,TABLE_NAME FROM information_schema.`COLUMNS` WHERE COLUMN_NAME='字段名字' 参考:MySQL中,一个字段在多张表都存在,怎么用sql语句一次性查询这些表呢

MySQL中使用表别名与字段别名的基本教程_Mysql

MySQL 表别名(Alias)SQL 表别名 在 SQL 语句中,可以为表名称及字段(列)名称指定别名(Alias),别名是 SQL 标准语法,几乎所有的数据库系统都支持.通过关键字 AS 来指定. 表别名语法: SELECT column FROM table AS table_alias 上述 SQL 执行后的效果,给人感觉是对 table_alias 表进行查询,但实际上对单表做简单的别名查询通常是无意义的.一般是对一个表要当作多个表来操作,或者是对多个表进行操作时,才设置表别名. 表别

mysql中合并两个字段的方法分享_Mysql

例如:select (a+b) as c from 表 类型也一致都是varchar型的,可就是显示不正确. 直到concat() MySQL中concat函数 下面通过一个例子介绍MySQL中的concat函数的使用方法,比如select concat('11','22','33'). MySQL中concat函数 使用方法: CONCAT(str1,str2,-) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. 注意: 如果所有参数均为非二进制字符串,则

mysql中删除字符串或字段中空格函数

在mysql中提供了ltrim,rtrim函数来删除字符的首毛空格那么如果我要删除字符如"abc fdsa"应该如何做来,下面我们来看教程 ltrim 函数 代码如下  mysql> select concat('.', ltrim(' ddd '), '.'); rtrim函数 代码如下  mysql> select concat('.', rtrim(' ddd '), '.'); trim 字符串函数,实在是强大.它不仅能消除字符串首尾部的空格,还可以消除我们指定的任

深入研究mysql中的varchar和limit(容易被忽略的知识)_Mysql

为什么标题要起这个名字呢?commen sence指的是那些大家都应该知道的事情,但往往大家又会会略这些东西,或者对这些东西一知半解,今天我总结下自己在mysql中遇到的一些commen sense类型的问题. 1.varchar(5)可以存储多少个汉字,多少个字母数字? 相信有好多人应该跟我一样,对这个已经很熟悉了,根据经验我们能很快的做出决定,比如说用varchar(200)去存储url等等,但是,即使你用了很多次也很熟悉了,也有可能对上面的问题做出错误的回答. 这个问题我查了好多资料,有的

MySQL中利用索引对数据进行排序的基础教程_Mysql

MySQL中,有两种方式生成有序结果集:一是使用filesort,二是按索引顺序扫描.利用索引进行排序操作是非常快的,而且可以利用同一索引同时进行查找和排序操作.当索引的顺序与ORDER BY中的列顺序相同且所有的列是同一方向(全部升序或者全部降序)时,可以使用索引来排序.如果查询是连接多个表,仅当ORDER BY中的所有列都是第一个表的列时才会使用索引.其它情况都会使用filesort. MySQL索引通常是被用于提高WHERE条件的数据行匹配或者执行联结操作时匹配其它表的数据行的搜索速度.

MySQL中distinct与group by之间的性能进行比较_Mysql

最近在网上看到了一些测试,感觉不是很准确,今天亲自测试了一番.得出了结论,测试过程在个人计算机上,可能不够全面,仅供参考. 测试过程: 准备一张测试表  CREATE TABLE `test_test` ( `id` int(11) NOT NULL auto_increment, `num` int(11) NOT NULL default '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1

mysql实现根据多个字段查找和置顶功能_Mysql

mysql根据多个字段查找 在mysql中,如果要实现根据某个字段排序的时候,可以使用下面的SQL语句 SELECT * FROM 'TABLE_NAME' ORDER BY 'Field' 然而,如果要实现根据某个字段排序后再根据另一个字段排序的时候应该如何呢?可以使用下面的SQL语句 SELECT * FROM 'TABLE_NAME' ORDER BY FIELD1, FIELD2; 如果要加上排序的话 SELECT * FROM 'TABLE_NAME; ORDER BY FIELD1

MySQL中Distinct和Group By语句的基本使用教程_Mysql

MySQL Distinct 去掉查询结果重复记录DISTINCT 使用 DISTINCT 关键字可以去掉查询中某个字段的重复记录. 语法: SELECT DISTINCT(column) FROM tb_name 例子: 假定 user 表有如下记录: uid username 1 小李 2 小张 3 小李 4 小王 5 小李 6 小张 SQL 语句: SELECT DISTINCT(username) FROM user 返回查询结果如下: username 小李 小张 小王 提示 使用 D