Sqlserver函数:获取拼音

CREATE function [dbo].[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 +
  --简体GBK码汉字UNICODE值从19968开始, WINDOWS多国汉字,UNICODE目前收录汉字共20902个
  (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 
  else (case when CHARINDEX(@word,'-0123456789')>1 and @word <>''  then @word else '' end ) 
  end) 
  set @str = right(@str, len(@str) - 1) 
 end
 return @PY 
end
GO

猜你喜欢

转载自blog.csdn.net/u013667895/article/details/79063033