【转载】MSSQL中单字节和双字节互转自定义函数(全角半角转换)

一、首先创建一个自定义函数,代码如下:

alter function f_convert(
@str nvarchar(4000), --要转换的字符串
@flag bit            --转换标志,0转换成半角,1转换成全角
)
returns nvarchar(max)
as
begin
  declare @pat nvarchar(8),@step int,@i int,@spc int
  if @flag=0
    select @pat=N'%[!-~ ]%',@step=-65248
  else
    select @pat=N'%[!-~ ]%',@step=65248
  set @i=patindex(@pat COLLATE Latin1_General_BIN,@str)
  while @i>0
    select @str=stuff(@str,@i,1,nchar(case unicode(substring(@str,@i,1))
    when 32 then 12288
    when 12288 then 32
    else unicode(substring(@str,@i,1))+@step end))
    ,@i=patindex(@pat COLLATE Latin1_General_BIN,@str)
  return(@str)
end
go

2、函数创建完成后,就可以用select语句测试啦,测试代码如下:

 -- 单字节转双字节
 select  dbo.f_convert('abcd1234:单字节转双字节',1)
 -- 双字节转单字节
 select  dbo.f_convert('abcd1234:单字节转双字节',0)

 

* 3、VFP中对应的函数为:
* ======================
strconv(cExpression,1)
strconv(cExpression,2)  

 

上一篇:PAT 乙级 1039 到底买不买


下一篇:PAT乙级10023题——C语言