查询表是否包含特殊字符

查询表是否包含特殊字符%,_^()"[]

--匹配 %,_^()"[]'
DECLARE @TableName varchar(255)='pgdlyDetail'
DECLARE @ColunName varchar(255)
DECLARE @sql VARCHAR(max)
DECLARE Table_Cursor CURSOR FOR
--包含有列‘sigdate’的表
select name from syscolumns where id = object_id(@TableName)
OPEN Table_Cursor;

FETCH NEXT FROM Table_Cursor INTO @ColunName;
WHILE(@@FETCH_STATUS=0)
BEGIN
SET @sql=' IF EXISTS (  SELECT 1 FROM '+@TableName+' where '+@ColunName+' LIKE ''%[%,,,_,^,(,),"]%'' OR '+@ColunName+' LIKE ''[%''   OR '+@ColunName+' LIKE ''%]'' OR '+@ColunName+' like ''%''+char(39)+''%'')
     SELECT *FROM '+@TableName+' where '+@ColunName+' LIKE ''%[%,,,_,^,(,),"]%'' OR '+@ColunName+' LIKE ''[%''  OR '+@ColunName+' LIKE ''%]'' OR '+@ColunName+' like ''%''+char(39)+''%'''
EXEC (@sql)
 FETCH NEXT FROM Table_Cursor INTO @ColunName;
END
CLOSE Table_Cursor;
DEALLOCATE Table_Cursor;
GO

注意:SQL server不支持正则表达式,但他支持通配符匹配

%(百分号)通配符:任何零个或多个字符的字符串。

_(下划线)通配符:任何单个字符

寻找范围的方括号,列如[a-d]表示单个字符的范围为 a-d

[^]通配符:不在列表或范围内的任何单个字符。

注意使用LIKE模糊查询默认是不区分大小写的

posted @ 2022-06-23 11:09  乌柒柒  阅读(120)  评论(0编辑  收藏  举报