SqlServer数据库全角和半角互转的方法

---摘要: SqlServer数据库全角和半角互转的方法 CREATE FUNCTION f_Convert( @str NVARCHAR(4000),
--要转换的字符串 @flag bit --转换标志,0转换成半角,1转换成全角 )
--RETURNS nvarchar(4000) www.2cto.com AS BEG...

--table1为要转换的表,column1为要转换的表字段
--调用:update table1 set column1=dbo.f_Convert(column1,0);


CREATE FUNCTION f_Convert
(
@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;

原文地址:https://www.cnblogs.com/furenjian/p/9244577.html