SQL取得汉字拼⾳⾸字母转载)create function GetPY(@str varchar(500))
returns varchar(500)
as
begin
declare@cyc int,@length int,@str1varchar(100),@charcate varbinary(20)
set@cyc=1--从第⼏个字开始取
set@length=len(@str)--输⼊汉字的长度
set@str1=''--⽤于存放返回值
while@cyc<=@length
载的拼音begin
select@charcate=cast(substring(@str,@cyc,1) as varbinary)--每次取出⼀个字并将其转变成⼆进制,便于与GBK编码表进⾏⽐较if@charcate>=0XB0A1and@charcate<=0XB0C4
set@str1=@str1+'A'--说明此汉字的⾸字母为A,以下同上
else if@charcate>=0XB0C5and@charcate<=0XB2C0
set@str1=@str1+'B'
else if@charcate>=0XB2C1and@charcate<=0XB4ED
set@str1=@str1+'C'
else if@charcate>=0XB4EE and@charcate<=0XB6E9
set@str1=@str1+'D'
else if@charcate>=0XB6EA and@charcate<=0XB7A1
set@str1=@str1+'E'
else if@charcate>=0XB7A2and@charcate<=0XB8C0
set@str1=@str1+'F'
else if@charcate>=0XB8C1and@charcate<=0XB9FD
set@str1=@str1+'G'
else if@charcate>=0XB9FE and@charcate<=0XBBF6
set@str1=@str1+'H'
else if@charcate>=0XBBF7and@charcate<=0XBFA5
set@str1=@str1+'J'
else if@charcate>=0XBFA6and@charcate<=0XC0AB
set@str1=@str1+'K'
else if@charcate>=0XC0AC and@charcate<=0XC2E7
set@str1=@str1+'L'
else if@charcate>=0XC2E8and@charcate<=0XC4C2
set@str1=@str1+'M'
else if@charcate>=0XC4C3and@charcate<=0XC5B5
set@str1=@str1+'N'
else if@charcate>=0XC5B6and@charcate<=0XC5BD
set@str1=@str1+'O'
else if@charcate>=0XC5BE and@charcate<=0XC6D9
set@str1=@str1+'P'
else if@charcate>=0XC6DA and@charcate<=0XC8BA
set@str1=@str1+'Q'
else if@charcate>=0XC8BB and@charcate<=0XC8F5
set@str1=@str1+'R'
else if@charcate>=0XC8F6and@charcate<=0XCBF9
set@str1=@str1+'S'
else if@charcate>=0XCBFA and@charcate<=0XCDD9
set@str1=@str1+'T'
else if@charcate>=0XCDDA and@charcate<=0XCEF3
set@str1=@str1+'W'
else if@charcate>=0XCEF4and@charcate<=0XD1B8
set@str1=@str1+'X'
else if@charcate>=0XD1B9and@charcate<=0XD4D0
set@str1=@str1+'Y'
else if@charcate>=0XD4D1and@charcate<=0XD7F9
set@str1=@str1+'Z'
set@cyc=@cyc+1--取出输⼊汉字的下⼀个字
end
return@str1--返回输⼊汉字的⾸字母
end
--测试数据
select dbo.GetPY('中华⼈民共和国')