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;