zoukankan      html  css  js  c++  java
  • SQL标量值函数:返回汉字拼音首拼

    今天遇到一个需求,客户要求在系统客户端选择客户的时候,可以用拼音首拼去快速过滤选择,此时我们在客户表里面加多一个拼音首拼字段CustPY来记录,字段加好了,我们要把所有客户名称的拼音简拼都更新到CustPY字段中。

    为此利用以下函数做了个批量更新

    执行语句:UPDATE  客户表 SET  CustPY=dbo.[Fn_GetPinYin](客户名称字段)

    这样就可以了。需要注意的是:多音字。例如 SELECT dbo.[Fn_GetPinYin]('重庆') 返回ZQ    谨此记录。

    -- =============================================
    -- 调用:SELECT dbo.[Fn_GetPinYin]('中国')
    -- Create date: 2015-01-06
    -- Description:    返回汉字拼音首拼
    -- =============================================
    CREATE  FUNCTION [dbo].[Fn_GetPinYin] (@str NVARCHAR(4000))
    RETURNS NVARCHAR(4000)
    AS
        BEGIN
            DECLARE @word NCHAR(1) ,
                @PY NVARCHAR(4000)

            SET @PY=''

            SET @str=REPLACE(@str, '(', '(')
            SET @str=REPLACE(@str, ')', ')')

            WHILE LEN(@str)>0
                BEGIN
                    SET @word=LEFT(@str, 1)

                    --如果非汉字字符,返回原字符
                    SET @PY=@PY+(CASE WHEN UNICODE(@word) BETWEEN 19968 AND 19968+20901 THEN (SELECT TOP 1
                                                                                                        PY
                                                                                              FROM      (SELECT 'A' AS PY ,
                                                                                                                N'驁' AS word
                                                                                                         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'咗'
                                                                                                        ) T
                                                                                              WHERE     word>=@word COLLATE Chinese_PRC_CS_AS_KS_WS
                                                                                              ORDER BY  PY ASC
                                                                                             )
                                      ELSE @word
                                 END)
                    SET @str=RIGHT(@str, LEN(@str)-1)
                END

            RETURN @PY

        END

    如果朋友们觉得以后可能会用到的话,欢迎转载,当然也可以推荐一下,谢谢。

    PS:此博文是利用Windows Live Writer 2012编写,格式效果可能不太好。

  • 相关阅读:
    Codeforces Round 546 (Div. 2)
    Codeforces Round 545 (Div. 2)
    Codeforces Round 544(Div. 3)
    牛客小白月赛12
    Codeforces Round 261(Div. 2)
    Codeforces Round 260(Div. 2)
    Codeforces Round 259(Div. 2)
    Codeforces Round 258(Div. 2)
    Codeforces Round 257 (Div. 2)
    《A First Course in Probability》-chaper5-连续型随机变量-随机变量函数的分布
  • 原文地址:https://www.cnblogs.com/lhmlyx2723356/p/4232920.html
Copyright © 2011-2022 走看看