• 查询表是否包含特殊字符


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

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

  • 相关阅读:
    内核随记(三)同步(1)
    排列算法
    SQLite入门与分析(八)存储模型(3)
    内核随记(一)——理解中断(2)
    dup与dup2系统调用
    内核随记(四)文件系统(1)
    SQLite入门与分析(八)存储模型(2)
    SQLite入门与分析(九)VACUUM命令分析
    c中static变量局部变量
    (i++)+(i++)与(++i)+(++i)
  • 原文地址:https://www.cnblogs.com/yyl001/p/16404478.html
Copyright © 2020-2023  润新知