??
--1.查询区分全角与半角字符 --测试数据 DECLARE @t TABLE(col varchar(10)) INSERT @t SELECT 'aa' UNION ALL SELECT 'Aa' UNION ALL SELECT 'AA'? ?--全角A UNION ALL SELECT 'A,A'??--全角A,半角逗号(,) UNION ALL SELECT 'A,A'?--全角A,全角逗号(,)
--1.查大写字母 SELECT * FROM @t WHERE col COLLATE Chinese_PRC_CS_AS_WS like '%A%'
--结果 Aa
--2.查全角字母 SELECT * FROM @t WHERE col COLLATE Chinese_PRC_CS_AS_WS like '%A%'
--结果 AA A,A A,A
--3.查半角逗号(,) SELECT * FROM @t WHERE col COLLATE Chinese_PRC_CS_AS_WS like '%,%'
--结果 A,A
--3.查全角逗号(,) SELECT * FROM @t WHERE col COLLATE Chinese_PRC_CS_AS_WS like '%,%' GO
--结果 A,A
?
--2 实现全角与半角字符转换的处理函数 CREATE FUNCTION 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,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,1))+@step)) ???,@i=PATINDEX(@pat COLLATE LATIN1_GENERAL_BIN,@str) ?RETURN(@str) END GO
SELECT [dbo].[f_Convert] ('AAA',0)
--结果 AAA
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|