碧海蓝天
今朝有酒今朝醉 明日无茶明日醒
 1--实现全角与半角字符转换处理
 2CREATE FUNCTION [dbo].[uf_CharWidthConvert](
 3@str NVARCHAR(4000), --要转换的字符串
 4@flag bit              --转换标志,0转换成半角,1转换成全角
 5)RETURNS nvarchar(4000)
 6AS
 7BEGIN
 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)
22END
23
24GO
25SET QUOTED_IDENTIFIER OFF 
26GO
27SET ANSI_NULLS ON 
28GO
posted on 2007-01-12 17:58  碧海蓝天  阅读(357)  评论(0)    收藏  举报