mysql获取汉字拼音首字母

创建一个函数:

CREATE  FUNCTION `GET_FIRST_PINYIN_CHAR`(PARAM VARCHAR(255)) RETURNS varchar(2) CHARSET utf8
BEGIN

//定义返回值,用于接收结果
    DECLARE V_RETURN VARCHAR(255);

//定义变量用于接收函数参数的左侧第一个字符
    DECLARE V_FIRST_CHAR VARCHAR(2);

//left(str,index)表示获取左边前index个字符,upper()函数将字符串转为大写
    SET V_FIRST_CHAR = UPPER(LEFT(PARAM,1));
    SET V_RETURN = V_FIRST_CHAR;

//length()函数返回字符串长度(utf-8中中文三个字符,英文数字一个字符,其他编码统一为一个字符),

//CHARACTER_LENGTH()获取字符串字符数,这个函数里中英文数字都只算一个字符

//若length()函数获取的字符串长度不等于CHARACTER_LENGTH获取的字符串长度,即字符串为中文,那么进入下方then中
    IF LENGTH( V_FIRST_CHAR) <> CHARACTER_LENGTH( V_FIRST_CHAR ) THEN

//CONVERT(PARAM USING gbk)将参数转为gbk字符集

//LEFT(CONVERT(PARAM USING gbk),1)将转换后的参数的第一个字符取出

//HEX(LEFT(CONVERT(PARAM USING gbk),1))将第一个字符转为16进制

//CONV(super,16,10)将上一步获取的16进制数转为10进制

//INTERVAL(super,
//       0xB0A1,0xB0C5,0xB2C1,0xB4EE,0xB6EA,0xB7A2,0xB8C1,0xB9FE,0xBBF7,

//     0xBFA6,0xC0AC,0xC2E8,0xC4C3,0xC5B6,0xC5BE,0xC6DA,0xC8BB,
//    0xC8F6,0xCBFA,0xCDDA,0xCEF4,0xD1B9,0xD4D1) 将上一步的10进制数与参数列表中的16进制数作对比,找到上一步的//10进制数所在区间,例:小于第一个数即为0,小于第二个即为1

//elt(super, 'A','B','C','D','E','F','G','H','J','K','L','M','N','O','P','Q','R','S','T','W','X','Y','Z')

//根据上一步后去的区间索引super,获取第super个字符
    SET V_RETURN = ELT(INTERVAL(CONV(HEX(LEFT(CONVERT(PARAM 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');
    END IF;
    RETURN V_RETURN;
END

创建函数后应用,select GET_FIRST_PINYIN_CHAR(字符串)

其他更多函数可在菜鸟查看

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值