在某些情況下會需要使用全形半形的轉換 而且這段轉換必須在 SQL 當中執行 偏偏內建函數沒有提供轉換函數 因此就必須自行撰寫相關函數 程式如下 CREATE FUNCTION [dbo].[sConvert]( @str NVARCHAR(4000), --...
在某些情況下會需要使用全形半形的轉換
而且這段轉換必須在 SQL 當中執行
偏偏內建函數沒有提供轉換函數
因此就必須自行撰寫相關函數
程式如下
CREATE FUNCTION [dbo].[sConvert]( @str NVARCHAR(4000), --要轉換字串 @flag bit --0轉換成半形,1轉換成全形 )RETURNS Nvarchar(4000) AS BEGIN DECLARE @chg Nvarchar(8),@step int,@i int IF @flag=0 SELECT @chg=N'%[!-~]%',@step=-65248, @str=REPLACE(@str,N' ',N' ') ELSE SELECT @chg=N'%[!-~]%',@step=65248, @str=REPLACE(@str,N' ',N' ') SET @i=PATINDEX(@chg 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(@chg COLLATE LATIN1_GENERAL_BIN,@str) select @str = UPPER(@str) RETURN(@str) END
留言