mssql 中将汉字转换为拼音首字母方法

来源:互联网 发布:泰拉瑞亚数据 编辑:程序博客网 时间:2024/05/16 07:26

1.

--将汉字转换为拼音首字母

CREATE   function   GetAllPY(@str   nvarchar(4000))

returns   nvarchar(4000)

 

--WITH   ENCRYPTION

 

as

begin

declare   @intLen int

declare   @strRet nvarchar(4000)

declare   @temp   nvarchar(100)

 

set   @intLen   =   len(@str)

set   @strRet   =   ''

 

while   @intLen   >   0

begin

set   @temp   =   ''

 

select   @temp   =   case   

when   substring(@str,@intLen,1)   >=   '帀'   then   'Z'

when   substring(@str,@intLen,1)   >=   '丫'   then   'Y'

when   substring(@str,@intLen,1)   >=   '夕'   then   'X'

when   substring(@str,@intLen,1)   >=   '屲'   then   'W'

when   substring(@str,@intLen,1)   >=   '他'   then   'T'

when   substring(@str,@intLen,1)   >=   '仨'   then   'S'

when   substring(@str,@intLen,1)   >=   '呥'   then   'R'

when   substring(@str,@intLen,1)   >=   '七'   then   'Q'

when   substring(@str,@intLen,1)   >=   '妑'   then   'P'

when   substring(@str,@intLen,1)   >=   '噢'   then   'O'

when   substring(@str,@intLen,1)   >=   '拏'   then   'N'

when   substring(@str,@intLen,1)   >=   '嘸'   then   'M'

when   substring(@str,@intLen,1)   >=   '垃'   then   'L'

when   substring(@str,@intLen,1)   >=   '咔'   then   'K'

when   substring(@str,@intLen,1)   >=   '丌'   then     'J'

when   substring(@str,@intLen,1)   >=   '铪'   then   'H'

when   substring(@str,@intLen,1)   >=   '旮'   then   'G'

when   substring(@str,@intLen,1)   >=   '发'   then   'F'

when   substring(@str,@intLen,1)   >=   '妸'   then   'E'

when   substring(@str,@intLen,1)   >=   '咑'   then   'D'

when   substring(@str,@intLen,1)   >=   '嚓'   then   'C'

when   substring(@str,@intLen,1)   >=   '八'   then   'B'

when   substring(@str,@intLen,1)   >=   '吖'   then   'A'

else   rtrim(ltrim(substring(@str,@intLen,1)))

end

 

--对于汉字特殊字符,不生成拼音码

if   (ascii(@temp)>127)   set   @temp   =   ''

 

--对于英文中小括号,不生成拼音码

if   @temp   =   '('   or   @temp   =   ')'   set   @temp   =   ''

 

select   @strRet   =   @temp   +   @strRet

 

set   @intLen   =   @intLen   -   1

end

 

return   lower(@strRet)

end 

 

 

 

 

--测试 

select dbo. GetAllPY('中华人民共和国')

 

 

 

2.

--第二种方法

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

 

--测试

select dbo.fun_getPY('中国山东')

 

原创粉丝点击