转:汉字转换为拼音码(SQL Server)

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    

你可能感兴趣的:(SQL Server)