Sqlserver function: get pinyin

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) -- if it is not a Chinese character, return the original character
  set @PY = @PY +
  --Simplified GBK code Chinese character UNICODE value starts from 19968, WINDOWS multi-national Chinese characters, UNICODE currently contains a total of 20902 Chinese characters
  (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'Book'
    union all
     select 'C', N' wrong'
    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'retting'
    union all
     select 'P',N'exposure'
    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'rhyme'
    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

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325592662&siteId=291194637