Tom-Net

导航

取汉字拼音的sql函数


Create  function 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+(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 @str=right(@str,len(@str)-1)
 
end

 
return @PY

end

posted on 2009-06-11 16:30  Tom_Net  阅读(110)  评论(0)    收藏  举报