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

 更新时间:2014年08月07日 15:30:11   投稿:whsnow  
这篇文章主要介绍了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 ;

相关文章

  • gearman + mysql方式实现持久化操作示例

    gearman + mysql方式实现持久化操作示例

    这篇文章主要介绍了gearman + mysql方式实现持久化操作,简单描述了持久化的概念、原理,并结合实例形式分析了gearman + mysql持久化操作相关实现技巧,需要的朋友可以参考下
    2020-02-02
  • 一键重置mysql的root密码脚本

    一键重置mysql的root密码脚本

    本节主要介绍了一键重置mysql的root密码的实现脚本,需要的朋友可以参考下
    2014-07-07
  • MySQL Flink Watermark实现事件时间处理的关键技术

    MySQL Flink Watermark实现事件时间处理的关键技术

    Flink Watermark是Flink流处理框架中实现事件时间处理的关键技术之一。它是通过一种机制来解决数据乱序和延迟的问题,使得Flink可以在处理迟到的数据时保证结果的准确性。Flink Watermark可以在数据流中插入一个时间戳,将数据流转化为具有时间维度的数据集合
    2023-05-05
  • DQL数据查询语句使用示例

    DQL数据查询语句使用示例

    DQL(Data Query Language 数据查询语言):用于查询数据库对象中所包含的数据。DQL语言主要的语句:SELECT语句。DQL语言是数据库语言中最核心、最重要的语句,也是使用频率最高的语句
    2022-12-12
  • MySQL数据库中数值字段类型长度int(11)和Decimal(M,D)详解

    MySQL数据库中数值字段类型长度int(11)和Decimal(M,D)详解

    这篇文章主要介绍了MySQL数据库中数值字段类型长度int(11)和Decimal(M,D)字段详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • MySQL如何解决DOS窗口乱码问题

    MySQL如何解决DOS窗口乱码问题

    这篇文章主要介绍了MySQL如何解决DOS窗口乱码问题,帮助大家更好的理解和使用MySQL数据库,感兴趣的朋友可以了解下
    2020-11-11
  • 查一次left join没有走索引以及原因分析

    查一次left join没有走索引以及原因分析

    这篇文章主要介绍了查一次left join没有走索引以及原因分析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • 微信开发中mysql字符编码问题

    微信开发中mysql字符编码问题

    本文给大家介绍微信开发过程中mysql字符编码问题,本文介绍的非常详细,感兴趣的朋友一起来学习吧
    2015-08-08
  • 达梦数据库获取SQL实际执行计划方法详细介绍

    达梦数据库获取SQL实际执行计划方法详细介绍

    在达梦数据库中,使用EXPLAIN语句可以查看sql的执行计划,但EXPLAIN只生成执行计划,并不会真正执行SQL语句,因此产生的执行计划有可能不准。本章将带领大家了解多种获取SQL实际的执行计划的方法
    2022-10-10
  • MySQL中给自定义的字段查询结果添加排名的方法

    MySQL中给自定义的字段查询结果添加排名的方法

    这篇文章主要介绍了MySQL中给自定义的字段查询结果添加排名的方法,只需要对counter写一个小算式,非常简单,需要的朋友可以参考下
    2015-06-06

最新评论