USE [TESTDB]
GO
/****** Object: UserDefinedFunction [dbo].[f_Convert] Script Date: 2017/7/28 下午 04:21:04 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--================================================================================
--撰寫日期 : 20150625
--撰寫人員 :
--程式說明 :0轉換成半形,1轉換成全形
--使用範例 :
--規 格 :
--異動記錄 : 供 XXX 使用
--================================================================================
CREATE FUNCTION [dbo].[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