如何编写LIKE语法,其中搜索项包含百分比(%)?

时间:2018-03-23 05:53:30

标签: sql sql-server tsql sql-like

我正在使用SQL Server 2012,我需要对名为Notes的特定字段执行搜索。搜索条件是查找在该特定字段中提及术语8%的所有行。

我的WHERE查询的T-SQL子句如下所示:

WHERE [Notes] like '%[8%]%'

但是,根据上述语法,查询未正确过滤。它还包括提到术语8的行。

我看了下面问题中提出的答案,但他们仍然没有给我正确答案。

I'm using this example for this question

3 个答案:

答案 0 :(得分:2)

您需要在查询中转义%,例如

SELECT columns FROM table
   WHERE column LIKE '%\%%' ESCAPE '\'

Using SQL Escape Sequences

以下是来自MSDN

Pattern Matching with the ESCAPE Clause

您可以搜索包含一个或多个特殊通配符的字符串。例如,客户数据库中的折扣表可以存储包含百分号(%)的折扣值。要将百分号作为字符而不是通配符搜索,必须提供ESCAPE关键字和转义字符。例如,示例数据库包含一个名为comment的列,其中包含30%的文本。要在注释列中的任何位置搜索包含字符串30%的任何行,请指定WHERE子句,例如WHERE comment LIKE '%30!%%' ESCAPE '!'。如果未指定ESCAPE和转义字符,则数据库引擎将返回包含字符串30的所有行。

你可以尝试@TimBiegeleisen给出的答案也很简单。

答案 1 :(得分:2)

单个字符类表示单个字符。因此[%]表示文字百分比符号,8[%]表示文字8%。试试这个:

SELECT * FROM yourTable WHERE [Notes] like '%8[%]%'

Demo

答案 2 :(得分:0)

只需将您的where子句更改为

WHERE `Notes` LIKE '%8!%%' ESCAPE '!