MSSQL全形與半形轉換

在某些情況下會需要使用全形半形的轉換,而且這段轉換必須在 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

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *