2

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

  • !@#$%^&*()-_=+[]{}\|;':",./<>?

我寻找了所有可能的解决方案,例如 ESCAPE 字符、方括号等。但它只工作到

select * from table where title like '!@#$%[^]' ESCAPE '\'

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

看来我在这里遗漏了一些东西。

4

2 回答 2

0

你可能想试试这个:

    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 '\'

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

于 2017-03-24T11:16:18.687 回答
0

尝试使用以下简单方法regular expression

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

请注意, ] 必须单独使用,以免它结束正则表达式。

于 2017-03-24T12:33:27.250 回答