函数-SQL-获取中文的缩写字母(案例)

CREATE function [dbo].[fun_getPY](@str nvarchar(4000))     
returns nvarchar(4000)     
as     
begin     
    /*处理空格*/
    WHILE (CHARINDEX(' ', @str) > 0)
    BEGIN
        SET @str = REPLACE(@str, ' ', '')
    END
    /*处理tab*/
    WHILE (CHARINDEX('    ', @str) > 0)
    BEGIN
        SET @str = REPLACE(@str, '    ', '')
    END
    
    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)
      if(len(@PY)>= 64 ) break;    
      set   @str=right(@str,len(@str)-1)
    end      
    return   @PY
END


GO

猜你喜欢

转载自blog.csdn.net/huang714/article/details/87911144