1
--实现全角与半角字符转换处理
2
CREATE FUNCTION [dbo].[uf_CharWidthConvert](
3
@str NVARCHAR(4000), --要转换的字符串
4
@flag bit --转换标志,0转换成半角,1转换成全角
5
)RETURNS nvarchar(4000)
6
AS
7
BEGIN
8
DECLARE @pat nvarchar(8),@step int,@i int,@spc int
9
IF @flag=0
10
SELECT @pat=N'%[!-~]%',@step=-65248,
11
@str=REPLACE(@str,N' ',N' ')
12
ELSE
13
SELECT @pat=N'%[!-~]%',@step=65248,
14
@str=REPLACE(@str,N' ',N' ')
15
SET @i=PATINDEX(@pat COLLATE LATIN1_GENERAL_BIN,@str)
16
WHILE @i>0
17
SELECT @str=REPLACE(@str,
18
SUBSTRING(@str,@i,1),
19
NCHAR(UNICODE(SUBSTRING(@str,@i,1))+@step))
20
,@i=PATINDEX(@pat COLLATE LATIN1_GENERAL_BIN,@str)
21
RETURN(@str)
22
END
23![]()
24
GO
25
SET QUOTED_IDENTIFIER OFF
26
GO
27
SET ANSI_NULLS ON
28
GO
--实现全角与半角字符转换处理2
CREATE FUNCTION [dbo].[uf_CharWidthConvert](3
@str NVARCHAR(4000), --要转换的字符串4
@flag bit --转换标志,0转换成半角,1转换成全角5
)RETURNS nvarchar(4000)6
AS7
BEGIN8
DECLARE @pat nvarchar(8),@step int,@i int,@spc int9
IF @flag=010
SELECT @pat=N'%[!-~]%',@step=-65248,11
@str=REPLACE(@str,N' ',N' ')12
ELSE13
SELECT @pat=N'%[!-~]%',@step=65248,14
@str=REPLACE(@str,N' ',N' ')15
SET @i=PATINDEX(@pat COLLATE LATIN1_GENERAL_BIN,@str)16
WHILE @i>017
SELECT @str=REPLACE(@str,18
SUBSTRING(@str,@i,1),19
NCHAR(UNICODE(SUBSTRING(@str,@i,1))+@step))20
,@i=PATINDEX(@pat COLLATE LATIN1_GENERAL_BIN,@str)21
RETURN(@str)22
END23

24
GO25
SET QUOTED_IDENTIFIER OFF 26
GO27
SET ANSI_NULLS ON 28
GO
浙公网安备 33010602011771号