SQLServer 获取汉字字符串对应的拼音字母字符串

当需要通过汉字的拼音字母对汉字进行排序时会用到汉字到拼音的转换,此函数就是实现这个功能,常见场景为通讯录 。实现方式为SQL Server 语句获取中文字符串对应的汉语拼音字符串。


IF(OBJECT_ID('GetPinyinLetter') IS NOT null)
	DROP FUNCTION GetPyLetter;
GO 

CREATE FUNCTION GetPinyinLetter
    (
      @ChineseStr NVARCHAR(4000)
    )
RETURNS NVARCHAR(4000)
AS
    BEGIN
 
        DECLARE @SingleChar NCHAR(1) ,
            @ReturnString NVARCHAR(4000); 
        SET @ReturnString = ''; 

        WHILE LEN(@ChineseStr) > 0
            BEGIN
                SET @SingleChar = LEFT(@ChineseStr, 1); 
                IF ( UNICODE(@SingleChar) BETWEEN 19968 AND 19968 + 20901 )
                    SET @ReturnString = @ReturnString
                        + ( SELECT TOP 1
                                    PY
                            FROM    ( SELECT    'A' AS PY ,
                                                N'骜' AS ChineseCharacters
                                      UNION ALL
                                      SELECT    'B' ,
                                                N'簿'
                                      UNION ALL
                                      SELECT    'C' ,
                                                N'错'
                                      UNION ALL
                                      SELECT    'D' ,
                                                N'鵽'
                                      UNION ALL
                                      SELECT    'E' ,
                                                N'樲'
                                      UNION ALL
                                      SELECT    'F' ,
                                                N'鳆'
                                      UNION ALL
                                      SELECT    'G' ,
                                                N'腂'
                                      UNION ALL
                                      SELECT    'H' ,
                                                N'夻'
                                      UNION ALL
                                      SELECT    'J' ,
                                                N'攈'
                                      UNION ALL
                                      SELECT    'K' ,
                                                N'穒'
                                      UNION ALL
                                      SELECT    'L' ,
                                                N'鱳'
                                      UNION ALL
                                      SELECT    'M' ,
                                                N'旀'
                                      UNION ALL
                                      SELECT    'N' ,
                                                N'桛'
                                      UNION ALL
                                      SELECT    'O' ,
                                                N'沤'
                                      UNION ALL
                                      SELECT    'P' ,
                                                N'曝'
                                      UNION ALL
                                      SELECT    'Q' ,
                                                N'囕'
                                      UNION ALL
                                      SELECT    'R' ,
                                                N'鶸'
                                      UNION ALL
                                      SELECT    'S' ,
                                                N'蜶'
                                      UNION ALL
                                      SELECT    'T' ,
                                                N'箨'
                                      UNION ALL
                                      SELECT    'W' ,
                                                N'鹜'
                                      UNION ALL
                                      SELECT    'X' ,
                                                N'鑂'
                                      UNION ALL
                                      SELECT    'Y' ,
                                                N'韵'
                                      UNION ALL
                                      SELECT    'Z' ,
                                                N'咗'
                                    ) SpellingTable
                            WHERE   ChineseCharacters > = @SingleChar COLLATE Chinese_PRC_CS_AS_KS_WS
                            ORDER BY PY ASC
                          );
                ELSE
                    SET @ReturnString = @ReturnString + @SingleChar;

 
                SET @ChineseStr = RIGHT(@ChineseStr, LEN(@ChineseStr) - 1); 

            END;
 
        RETURN @ReturnString; 

    END;
GO

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值