取汉字拼音首字母的函数

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

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值