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.
我们希望根据最终用户应获得的结果,在搜索查询中允许以下所有特殊字符。所以我们在一列本身中输入以下所有值,现在想要 运行 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.