zoukankan      html  css  js  c++  java
  • 取汉字拼音首字母的存储过程很值得收藏的数据库自定义函数


    /*
    declare @r nvarchar(4000)
    set @r=dbo.fun_getPY ('易天')
    print @r
    */
    Create  function fun_getPY
     (
        @str nvarchar(4000)
     )
    returns nvarchar(4000)
    as
    begin

      declare @word nchar(1),@PY nvarchar(4000)

      set @PY=''

      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

     

     

  • 相关阅读:
    HDU 1018.Big Number-Stirling(斯特林)公式 取N阶乘近似值
    牛客网 Wannafly挑战赛9 C.列一列-sscanf()函数
    牛客网 Wannafly挑战赛9 A.找一找-数据处理
    Codeforces 919 C. Seat Arrangements
    Codeforces Round #374 (Div. 2) D. Maxim and Array 线段树+贪心
    Codeforces Round #283 (Div. 2) A ,B ,C 暴力,暴力,暴力
    Codeforces Round #283 (Div. 2) E. Distributing Parts 贪心+set二分
    Codeforces Round #280 (Div. 2) E. Vanya and Field 数学
    Codeforces Round #280 (Div. 2) D. Vanya and Computer Game 数学
    Codeforces Round #280 (Div. 2) A , B , C
  • 原文地址:https://www.cnblogs.com/yitian/p/921419.html
Copyright © 2011-2022 走看看