SQL根据GBK编码取汉字的拼音首字母的存储过程
来源:互联网 发布:淘宝众筹服务商 编辑:程序博客网 时间:2024/04/29 21:47
/*给出汉字字符串,输出其汉语拼音首字母的存储过程*/
create proc pinyin @var varchar(100)
as
begin
set @var=ltrim(rtrim(@var))
--去掉左右空格
declare @i int,@v varbinary(2),@varchar varchar(100),@pinyin varchar(100)
--@v varbinary的长度一定为2,因为GBK编码为4位16进制数即2个字节,如果不标明长度,默认为1字节,后面的代码将被截取
set @pinyin=''
set @i=1
--置初值
while @i<=len(@var)
-->@var长度时退出循环
begin
set @v=cast(substring(@var,@i,1) as varbinary)
--cast将该位置字符转换为二进制
if @v<0xB0A1 or @v>0xD7FD
--编码为四位16进制,前面的0x代表后面为十六进制,并不是GBK编码实际内容
begin
set @varchar=substring(@var,@i,1)
end
--如字符不属于汉字则输出原样字符
else if @v>=0xB0A1 and @v<=0xB0C4
begin
set @varchar='A'
end
else if @v>=0xB0C5 and @v<=0xB2C0
begin
set @varchar='B'
end
else if @v>=0xB2C1 and @v<=0xB2C0
begin
set @varchar='C'
end
else if @v>=0xB4EE and @v<=0xB6E9
begin
set @varchar='D'
end
else if @v>=0xB6EA and @v<=0xB7A1
begin
set @varchar='E'
end
else if @v>=0xB7A2 and @v<=0xB8C0
begin
set @varchar='F'
end
else if @v>=0xB8C1 and @v<=0xB9FD
begin
set @varchar='G'
end
else if @v>=0xB9EE and @v<=0xBBF6
begin
set @varchar='H'
end
else if @v>=0xBBF7 and @v<=0xBFA5
begin
set @varchar='J'
end
else if @v>=0xBFA6 and @v<=0xC0AB
begin
set @varchar='K'
end
else if @v>=0xC0AC and @v<=0xC2E7
begin
set @varchar='L'
end
else if @v>=0xC2E8 and @v<=0xC4C2
begin
set @varchar='M'
end
else if @v>=0xC4C3 and @v<=0xC5B5
begin
set @varchar='N'
end
else if @v>=0xC5B6 and @v<=0xC5BD
begin
set @varchar='O'
end
else if @v>=0xC5BE and @v<=0xC6D9
begin
set @varchar='P'
end
else if @v>=0xC6DA and @v<=0xC8BA
begin
set @varchar='Q'
end
else if @v>=0xC8BB and @v<=0xC8F5
begin
set @varchar='R'
end
else if @v>=0xC8F6 and @v<=0xCBF9
begin
set @varchar='S'
end
else if @v>=0xCBFA and @v<=0xCDD9
begin
set @varchar='T'
end
else if @v>=0xCDDA and @v<=0xCEF3
begin
set @varchar='W'
end
else if @v>=0xCEF4 and @v<=0xD1B8
begin
set @varchar='X'
end
else if @v>=0xD1B9 and @v<=0xD4D0
begin
set @varchar='Y'
end
else if @v>=0xD4D1 and @v<=0xD7FD
begin
set @varchar='Z'
end
set @pinyin=@pinyin+@varchar
--结果连接在结果字符串右边
set @i=@i+1
end
print @pinyin
end
--drop proc pinyin
exec pinyin '啊!我爱你'
create proc pinyin @var varchar(100)
as
begin
set @var=ltrim(rtrim(@var))
--去掉左右空格
declare @i int,@v varbinary(2),@varchar varchar(100),@pinyin varchar(100)
--@v varbinary的长度一定为2,因为GBK编码为4位16进制数即2个字节,如果不标明长度,默认为1字节,后面的代码将被截取
set @pinyin=''
set @i=1
--置初值
while @i<=len(@var)
-->@var长度时退出循环
begin
set @v=cast(substring(@var,@i,1) as varbinary)
--cast将该位置字符转换为二进制
if @v<0xB0A1 or @v>0xD7FD
--编码为四位16进制,前面的0x代表后面为十六进制,并不是GBK编码实际内容
begin
set @varchar=substring(@var,@i,1)
end
--如字符不属于汉字则输出原样字符
else if @v>=0xB0A1 and @v<=0xB0C4
begin
set @varchar='A'
end
else if @v>=0xB0C5 and @v<=0xB2C0
begin
set @varchar='B'
end
else if @v>=0xB2C1 and @v<=0xB2C0
begin
set @varchar='C'
end
else if @v>=0xB4EE and @v<=0xB6E9
begin
set @varchar='D'
end
else if @v>=0xB6EA and @v<=0xB7A1
begin
set @varchar='E'
end
else if @v>=0xB7A2 and @v<=0xB8C0
begin
set @varchar='F'
end
else if @v>=0xB8C1 and @v<=0xB9FD
begin
set @varchar='G'
end
else if @v>=0xB9EE and @v<=0xBBF6
begin
set @varchar='H'
end
else if @v>=0xBBF7 and @v<=0xBFA5
begin
set @varchar='J'
end
else if @v>=0xBFA6 and @v<=0xC0AB
begin
set @varchar='K'
end
else if @v>=0xC0AC and @v<=0xC2E7
begin
set @varchar='L'
end
else if @v>=0xC2E8 and @v<=0xC4C2
begin
set @varchar='M'
end
else if @v>=0xC4C3 and @v<=0xC5B5
begin
set @varchar='N'
end
else if @v>=0xC5B6 and @v<=0xC5BD
begin
set @varchar='O'
end
else if @v>=0xC5BE and @v<=0xC6D9
begin
set @varchar='P'
end
else if @v>=0xC6DA and @v<=0xC8BA
begin
set @varchar='Q'
end
else if @v>=0xC8BB and @v<=0xC8F5
begin
set @varchar='R'
end
else if @v>=0xC8F6 and @v<=0xCBF9
begin
set @varchar='S'
end
else if @v>=0xCBFA and @v<=0xCDD9
begin
set @varchar='T'
end
else if @v>=0xCDDA and @v<=0xCEF3
begin
set @varchar='W'
end
else if @v>=0xCEF4 and @v<=0xD1B8
begin
set @varchar='X'
end
else if @v>=0xD1B9 and @v<=0xD4D0
begin
set @varchar='Y'
end
else if @v>=0xD4D1 and @v<=0xD7FD
begin
set @varchar='Z'
end
set @pinyin=@pinyin+@varchar
--结果连接在结果字符串右边
set @i=@i+1
end
print @pinyin
end
--drop proc pinyin
exec pinyin '啊!我爱你'
- SQL根据GBK编码取汉字的拼音首字母的存储过程
- [转]SQL根据GBK编码取汉字的拼音首字母的存储过程,经测试,此版有BUG!学习中......
- SQL取汉字拼音首字母的存储过程、函数
- 取汉字拼音首字母的存储过程
- 取汉字拼音首字母的存储过程
- 取汉字拼音首字母的存储过程
- 取汉字拼音首字母的存储过程
- 取汉字拼音首字母的存储过程
- 取汉字拼音首字母的存储过程
- 取汉字拼音首字母的存储过程
- 取汉字拼音首字母的存储过程
- 取汉字拼音首字母的存储过程(SQLSERVER 2000)
- 汉字转换成拼音,拼音转换成汉字,字母边界之间汉字,取汉字拼音首字母的存储过程
- 通过GBK编码提取中文汉字的拼音首字母
- 取汉字的拼音首字母
- 根据汉字取拼音首字母
- SQL SERVER数据库中取汉字的拼音首字母
- mysql 存储过程 汉字取拼音或者首字母
- C#如何取硬件标志
- SQL报表之户籍管理实例
- SQL之游标
- SQL之ATM机实例
- SQL之随机函数及游标应用示例
- SQL根据GBK编码取汉字的拼音首字母的存储过程
- 绝对经典的javascript诠释
- Informix SQL函数的详细用法
- 学习.Net的经典网站
- Biorhythms
- 利用AVR中断的简单秒表
- SQL之银行业务示例
- SQL之触发器
- C二维数组冒泡排序