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


上一篇文章
下一篇文章

歡迎來到茂銓的網路記事本,這邊主要記錄著個人的一些體驗以及心得分享。

0 意見: