生成汉字助记码

ALTER FUNCTION getPinYin(@HZ NVARCHAR(4000))
RETURNS NVARCHAR(4000)
AS
BEGIN
DECLARE @word NCHAR(1)
DECLARE @PY NVARCHAR(4000)
SET @PY = ''
WHILE LEN(@HZ) > 0
  BEGIN
   SET @word = LEFT(@HZ,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 @HZ = RIGHT(@HZ,LEN(@HZ)-1)
  END
  RETURN @PY
END

 

posted @ 2014-03-19 12:51  美丽的矩阵  阅读(327)  评论(0编辑  收藏  举报