SQL取拼音首字母函数

/*--获得汉字字符串的首字母--*/  
--  取拼音首字母函数 
create   function  GetPinYinFromWord( @Str   varchar ( 500 ) = ''
returns   varchar ( 500
as  
begin  
    
declare   @strlen   int , @return   varchar ( 500 ), @ii   int  
    
declare   @n   int , @c   char ( 1 ), @chn   nchar ( 1
    
select   @strlen = len ( @str ), @return = '' , @ii = 0  
    
set   @ii = 0  
    
while   @ii < @strlen  
    
begin  
        
select   @ii = @ii + 1 , @n = 63 , @chn = substring ( @str , @ii , 1
        
if   @chn > ' z '  
        
select   @n   =   @n   + 1  
                    ,
@c   =   case  chn  when   @chn   then   char ( @n else   @c   end  
            
from
                
select   top   27   *   from  ( 
                    
select  chn  =   ' '  
                    
union   all   select   ' '  
                    
union   all   select   ' '  
                    
union   all   select   ' '  
                    
union   all   select   ' 饿 '  
                    
union   all   select   ' '  
                    
union   all   select   ' '  
                    
union   all   select   ' '  
                    
union   all   select   ' '          -- because have no 'i' 
                     union   all   select   ' '  
                    
union   all   select   ' '  
                    
union   all   select   ' '  
                    
union   all   select   ' '  
                    
union   all   select   ' '  
                    
union   all   select   ' '  
                    
union   all   select   ' '  
                    
union   all   select   ' '  
                    
union   all   select   ' '  
                    
union   all   select   ' '  
                    
union   all   select   ' '  
                    
union   all   select   ' '          -- no 'u' 
                     union   all   select   ' '          -- no 'v' 
                     union   all   select   ' '  
                    
union   all   select   ' 西 '  
                    
union   all   select   ' '  
                    
union   all   select   ' '  
                    
union   all   select   @chn as  a 
                
order   by  chn COLLATE Chinese_PRC_CI_AS 
            ) 
as  b 
        
else   set   @c = ' a '  
        
set   @return = @return + @c  
    
end  
    
return ( @return
end  

-- 测试 
--
Select dbo.GetPinYinFromWord('黎摄文') 
--
结果 
--
LSW  
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值