可能的重复项:
包含括号字符的 SQL Server LIKE
我在模式匹配方面遇到问题。我创建了两个对象说,带有代码
1)[blah1]
2)[blah2] respectively
在搜索选项卡中,假设如果我给出"[blah"作为模式,它返回所有字符串即 [blah1] 和 [blah2]
查询是
select *
from table1
where code like N'%[blah%'
我想问题出在条件和特殊字符上。如果您有解决方案,请还原。有没有任何解决方案可以转义字符"["。我试图将条件更改为 N'%[[blah%'。但即便如此,它也会返回表中的所有对象。
如果不关闭方括号,则不指定结果。
但是,当您关闭括号时,情况就不同了,即
select *
from table1
where code like N'%[blah%]%'
在这种情况下,它成为(any) + any of ('b','l','a','h','%') + (any)
的匹配项。 对于 SQL Server,可以使用 ESCAPE 子句对字符进行转义。
select * from table1 where code like N'%[blah%]%' escape ''
SQL 摆弄示例
您可以通过以下方式转义文字括号字符:
select *
from table1
where code like N'%[[]blah%'
来源:LIKE (Transact-SQL),在"使用通配符作为文字"部分下。
我想这是Microsoft保持一致的方式,因为它们也使用括号来分隔表和列标识符。 但是括号的使用不是标准的SQL。 就此而言,在 LIKE 模式中括号作为元字符也不是标准的 SQL,因此在其他品牌的数据库中根本不需要转义它。
根据我的理解,符号"["在查询中没有影响。 就像您使用符号和不使用符号进行查询一样,它会显示相同的结果。
您可以在 UI 级别跳过不需要的字符。
select * from table1 where code like '%[blah%'
select * from table1 where code like '%blah%'
两者都显示相同的结果。