如何得到汉字的首拼码

建表:  
create  table  tabpy(id  int  identity,b_begin  varbinary(2),b_end  varbinary(2),word  varchar(2))  
insert  tabpy  select  0xB0A1,  0xB0C4,'A'  
union  all  select  0xB0C5,  0xB2C0,'B'  
union  all  select  0xB2C1,  0xB4ED,'C'  
union  all  select  0xB4EE,  0xB6E9,'D'  
union  all  select  0xB6EA,  0xB7A1,'E'  
union  all  select  0xB7A2,  0xB8C0,'F'  
union  all  select  0xB8C1,  0xB9FD,'G'  
union  all  select  0xB9FE,  0xBBF6,'H'  
union  all  select  0xBBF7,  0xBFA5,'J'  
union  all  select  0xBFA6,  0xC0AB,'K'  
union  all  select  0xC0AC,  0xC2E7,'L'  
union  all  select  0xC2E8,  0xC4C2,'M'  
union  all  select  0xC4C3,  0xC5B5,'N'  
union  all  select  0xC5B6,  0xC5BD,'O'  
union  all  select  0xC5BE,  0xC6D9,'P'  
union  all  select  0xC6DA,  0xC8BA,'Q'  
union  all  select  0xC8BB,  0xC8F5,'R'  
union  all  select  0xC8F6,  0xCBF9,'S'  
union  all  select  0xCBFA,  0xCDD9,'T'  
union  all  select  0xCDDA,  0xCEF3,'W'  
union  all  select  0xCEF4,  0xD1B8,'X'  
union  all  select  0xD1B9,  0xD4D0,'Y'  
union  all  select  0xD4D1,  0xD7F9,'Z'  
 
函数:
 
create  function  getfirstpy(@a  varchar(200))  
returns  varchar(100)  
as    
begin  
declare  @i  int,@j  int,@result  varchar(100)  
set  @result=''  
set  @i=len(@a)  
set  @j=1  
   while  @j<=@i  
   begin  
     select  @result=@result+word  from  tabpy  where  cast(substring(@a,@j,1)  as  varbinary(2))  between  b_begin  and  b_end  
     set  @j=@j+1  
   end  
return  @result  
end    
 
语句:
 
select  dbo.getfirstpy('
中国人
')  
--
结果:
 
ZGR  
 
---------------------------------------------------------------  
 
--
可支持大字符集20000个汉字
!  
 
create  function  f_ch2py(@chn  nchar(1))  
returns  char(1)  
as  
begin  
declare  @n  int  
declare  @c  char(1)  
set  @n  =  63  
 
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  
'
'  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  @chn)  as  a  
order  by  chn  COLLATE  Chinese_PRC_CI_AS    
)  as  b  
return(@c)  
end  
 
go  
 
select  dbo.f_ch2py('
')    --Z  
select  dbo.f_ch2py('
')    --G  
select  dbo.f_ch2py('
')    --R  
select  dbo.f_ch2py('
')    --M

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值