收起左侧

    [其他教程] mysql 中如何取得汉字字段的各汉字首字母

    16
    回复
    2402
    查看
    [复制链接]

    管理员

    3374

    主题

    3421

    帖子

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    15115
    发表于 2015-9-20 17:13:30 | 显示全部楼层 |阅读模式
    [color=white !important][backcolor=rgb(108, 226, 108) !important]
    [color=white !important]?

    01

    02

    03

    04

    05

    06

    07

    08

    09

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    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 ;



    温馨提示:
    1、本站所有信息都来源于互联网有违法信息与本网站立场无关。
    2、当有关部门,发现本论坛有违规,违法内容时,可联系站长删除,否则本站不承担任何责任。
    3、当政府机关依照法定程序要求披露信息时,论坛均得免责。
    4、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    5、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    6、如果使用本帖附件,本站程序只提供学习使用,请24小时内删除!使用者搭建运营触犯法律,违法,违规,本站不承担任何责任。
    回复

    使用道具 举报

    注册会员

    0

    主题

    13

    帖子

    95

    积分

    注册会员

    Rank: 2

    积分
    95
    发表于 2015-9-20 17:50:48 | 显示全部楼层
    不错不错
    回复 支持 反对

    使用道具 举报

    注册会员

    0

    主题

    9

    帖子

    75

    积分

    注册会员

    Rank: 2

    积分
    75
    发表于 2015-9-20 17:20:28 | 显示全部楼层
    这个是好东西。
    回复 支持 反对

    使用道具 举报

    注册会员

    0

    主题

    8

    帖子

    64

    积分

    注册会员

    Rank: 2

    积分
    64
    发表于 2015-9-20 18:03:01 | 显示全部楼层
    支持,赞一个支持,赞一个
    回复 支持 反对

    使用道具 举报

    注册会员

    0

    主题

    17

    帖子

    97

    积分

    注册会员

    Rank: 2

    积分
    97
    发表于 2015-9-20 17:31:44 | 显示全部楼层
    看看怎么样,希望会不错的
    回复 支持 反对

    使用道具 举报

    注册会员

    0

    主题

    13

    帖子

    95

    积分

    注册会员

    Rank: 2

    积分
    95
    发表于 2015-9-20 17:54:06 | 显示全部楼层
    大人,此事必有蹊跷!
    回复 支持 反对

    使用道具 举报

    注册会员

    0

    主题

    16

    帖子

    95

    积分

    注册会员

    Rank: 2

    积分
    95
    发表于 2015-9-20 17:43:34 | 显示全部楼层
    顶顶多好
    回复 支持 反对

    使用道具 举报

    注册会员

    0

    主题

    6

    帖子

    59

    积分

    注册会员

    Rank: 2

    积分
    59
    发表于 2015-9-20 18:10:17 | 显示全部楼层
    这个源码真好!
    回复 支持 反对

    使用道具 举报

    注册会员

    0

    主题

    13

    帖子

    83

    积分

    注册会员

    Rank: 2

    积分
    83
    发表于 2015-9-20 17:54:38 | 显示全部楼层
    这么强,支持楼主,佩服
    回复 支持 反对

    使用道具 举报

    注册会员

    0

    主题

    16

    帖子

    93

    积分

    注册会员

    Rank: 2

    积分
    93
    发表于 2015-9-20 17:43:15 | 显示全部楼层
    前排支持下了哦~
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    在线客服
    热线电话

    微信扫一扫
    专注源码分享6年
    全国免费热线电话

    400-225-995

    周一至周日9:00-23:00

    反馈建议

    a5887776@163.com 在线QQ咨询

    Powered by Discuz! X3.4 Licensed © 2001-2013 Comsenz Inc.