我们希望根据最终用户应该可以使用哪些结果,在搜索查询中允许以下所有特殊字符。所以我们在一列中输入以下所有值,现在想要使用 Like 运算符运行 sql 查询。
- !@#$%^&*()-_=+[]{}\|;':",./<>?
我寻找了所有可能的解决方案,例如 ESCAPE 字符、方括号等。但它只工作到
select * from table where title like '!@#$%[^]' ESCAPE '\'
只要我添加“&”,就不会返回任何行。
看来我在这里遗漏了一些东西。
我们希望根据最终用户应该可以使用哪些结果,在搜索查询中允许以下所有特殊字符。所以我们在一列中输入以下所有值,现在想要使用 Like 运算符运行 sql 查询。
我寻找了所有可能的解决方案,例如 ESCAPE 字符、方括号等。但它只工作到
select * from table where title like '!@#$%[^]' 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 '%]%';
请注意, ] 必须单独使用,以免它结束正则表达式。