SQL获取汉字首字母函数

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 @+(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> 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 


GO

测试:

SELECT dbo.fun_getPY(‘芷‘)

相关推荐