---摘要: 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;