MySQL 自定义函数 - 根据输入汉字获取拼音的全拼

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
CREATE DEFINER=`root`@`%` FUNCTION `to_pinyin`(NAME VARCHAR(255) CHARSET gbk) RETURNS varchar(255) CHARSET gbk
BEGIN 
    DECLARE mycode INT
    DECLARE tmp_lcode VARCHAR(2) CHARSET gbk; 
    DECLARE lcode INT
   
    DECLARE tmp_rcode VARCHAR(2) CHARSET gbk; 
    DECLARE rcode INT
   
    DECLARE mypy VARCHAR(255) CHARSET gbk DEFAULT ''
    DECLARE lp INT
   
    SET mycode = 0; 
    SET lp = 1; 
   
    SET NAME = HEX(NAME); 
   
    WHILE lp < LENGTH(NAME) DO 
   
        SET tmp_lcode = SUBSTRING(NAME, lp, 2); 
        SET lcode = CAST(ASCII(UNHEX(tmp_lcode)) AS UNSIGNED); 
        SET tmp_rcode = SUBSTRING(NAME, lp + 2, 2); 
        SET rcode = CAST(ASCII(UNHEX(tmp_rcode)) AS UNSIGNED); 
        IF lcode > 128 THEN 
            SET mycode =65536 - lcode * 256 - rcode ; 
            SELECT CONCAT(mypy,pin_yin_) INTO mypy FROM t_base_pinyin WHERE CODE_ >= ABS(mycode) ORDER BY CODE_ ASC LIMIT 1; 
            SET lp = lp + 4; 
        ELSE 
            SET mypy = CONCAT(mypy,CHAR(CAST(ASCII(UNHEX(SUBSTRING(NAME, lp, 2))) AS UNSIGNED))); 
            SET lp = lp + 2; 
        END IF; 
    END WHILE; 
    RETURN LOWER(mypy); 
END

  

posted @   一世尘梦(Aion)  阅读(519)  评论(0编辑  收藏  举报
编辑推荐:
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
阅读排行:
· 开发的设计和重构,为开发效率服务
· 从零开始开发一个 MCP Server!
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· Ai满嘴顺口溜,想考研?浪费我几个小时
点击右上角即可分享
微信分享提示