如何编写搜索词包含百分比 (%) 的 LIKE 语法?

How to write the LIKE syntax where the search term includes a percentage (%)?

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

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

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

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

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

SQL 'LIKE' query using '%' where the search criteria contains '%'

您需要在下面的查询中转义 %

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

Using SQL Escape Sequences

以下来自 MSDN

Pattern Matching with the ESCAPE Clause

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

的行

您可以尝试@TimBiegeleisen 给出的以下答案,这也是一种简单的方法。

一个字符class表示一个字符。所以 [%] 表示文字百分号,8[%] 表示文字 8%。试试这个:

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

Demo

只需将您的 where 子句更改为

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