--(此函数部分思路参考了优快云上大力的转换函数)
--邹建2005.01(引用请保留此信息)--*/
go
--创建函数
create function SBC2DBC
(
@str nvarchar(4000), --要转换的字符串
@flag bit --转换标志,0转换成半角,1转换成全角
)
returns nvarchar(4000)
as
begin
declare @pat nvarchar(8),@step int,@i int,@spc int
if @flag=0
select @pat=N'%[!-~]%',@step=-65248,@str=replace(@str,N' ',N' ')
else
select @pat=N'%[!-~]%',@step=65248,@str=replace(@str,N' ',N' ')
set @i=patindex(@pat collate latin1_general_bin,@str)
while @i>0
select @str=replace(@str,substring(@str,@i,1),nchar(unicode(substring(@str,@i,1))+@step))
,@i=patindex(@pat collate latin1_general_bin,@str)
return(@str)
end
--测试示例
select dbo.SBC2DBC('~~~~ca!b',1)
--运行结果
/*
~~~~ca!b
*/
--附半角全角表
/*
ASCII 全角字符 Unicode 半角字符 Unic