在Like子句中使用方括号的SQL选择值?

时间:2014-05-28 03:57:05

标签: sql sql-server

我有简单的选择查询:

Select * from ABC
where title like N'%[text] xxxxx%'   => return nothing.

Select * from ABC
where title like N'%xxxxx%'  => correct record   '[text] xxxx'

我的表中有一些内容包含[xxx]的记录.....我必须将它们与数据库外部来源的其他内容进行比较,来源中的内容也可能包含方括号。

例如:我可以从其他来源获得数以千计的标题进行比较:

  • [text] content
  • content

2种格式,只是不知道如何与数据库中的标题进行比较,因为我事先并不知道它的结构。

如何传入可能包含方括号但仍能获得正确结果的内容?

3 个答案:

答案 0 :(得分:1)

Searching with special characters

SELECT * 
FROM ABC
WHERE title LIKE N'%\[text] xxxxx%' ESCAPE '\'

答案 1 :(得分:1)

你需要像下面那样使用它

Select * from ABC 
where title like N'%[[]text] xxxxx%' 

在此处查看此相关的SO主题How can I escape square brackets in a LIKE clause?

答案 2 :(得分:1)

您可以使用[]包围特殊字符(或范围)。因此,如果您希望搜索包含任何括号,只需在where子句中使用“[[]”而不是“[”和“[]]”而不是“]”。

Select * from ABC
where title like N'%[[]text[]] xxxxx%'