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

     

     

  • 相关阅读:
    MYSQL数据库查看被锁状态以及解锁
    MongoDB命令
    代码重构
    笔试常见之C类型转换
    WeakReference(弱引用)(转)
    Linux ubuntu16.04下vim的安装与配置
    mysql Access denied for user root@localhost之错误解决方法(错误码:1045)
    mysql服务无法启动报错1067解决办法 (mysql启动错误1067)
    js的ajax封装
    windows下apache tomcat整合
  • 原文地址:https://www.cnblogs.com/yitian/p/921419.html
Copyright © 2011-2022 走看看