查询表是否包含特殊字符
查询表是否包含特殊字符%,_^()"[]
--匹配 %,_^()"[]' 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模糊查询默认是不区分大小写的