SQL轉換全形和半形函式
阿新 • • 發佈:2021-10-17
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 GO 呼叫: update table1 set column1=dbo.f_Convert(column1,0); declare @s1 varchar(8000) select @s1='中 2-3456a78STUVabn中國opwxyz' select dbo.f_convert(@s1,0),dbo.f_convert(@s1,1)
https://www.cnblogs.com/karkash/p/6357510.html