SQL 服务器 - Sql 带有特殊字符的类似运算符的查询

SQL Server - Sql query like operator with special characters

我们希望根据最终用户应获得的结果,在搜索查询中允许以下所有特殊字符。所以我们在一列本身中输入以下所有值,现在想要 运行 sql 使用 Like 运算符查询。

我寻找了所有可能的解决方案,如 ESCAPE 字符、方括号等。 但它只适用于

select * 来自 table 标题像 '!@#$%[^]' ESCAPE '\'

只要我添加“&”,就不会返回任何行。

我好像漏掉了什么。

您可能想试试这个:

    declare @table table( title varchar(100))
    insert into @table values ('!@#$%^&*()-_=+[]{}\|;'':",./<>?')

    select  *
    from    @table
    where   title like '!@#$%^&%' escape '\'

    select  *
    from    @table
    where   title like '!@#$%^&*()-_=+\[]%' escape '\'

    select  *
    from    @table
    where   title like '!@#$%^&*()-_=+\[]{}\|%' escape '\'

    select  *
    from    @table
    where   title like '!@#$%^&*()-_=+\[]{}\|;'':",./<>?%' escape '\'

确保转义左方括号和反斜杠。另外,不需要将 ^ 字符放在方括号之间。

使用 regular expression 尝试这种简单的方法,如下所示:

SELECT * FROM <YourTable>
WHERE <YourColumn> LIKE '%[!@#$%^&*()-_=+{}\|;'':",./[<>?]%' OR <YourColumn> LIKE '%]%';

Note that ] had to be taken separately so that it doesn't end the regular expression.