我正在使用SQL Server 2012
,我需要对名为Notes
的特定字段执行搜索。搜索条件是查找在该特定字段中提及术语8%
的所有行。
我的WHERE
查询的T-SQL
子句如下所示:
WHERE [Notes] like '%[8%]%'
但是,根据上述语法,查询未正确过滤。它还包括提到术语8
的行。
我看了下面问题中提出的答案,但他们仍然没有给我正确答案。
答案 0 :(得分:2)
您需要在查询中转义%
,例如
SELECT columns FROM table
WHERE column LIKE '%\%%' ESCAPE '\'
以下是来自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[%]%'
答案 2 :(得分:0)
只需将您的where子句更改为
WHERE `Notes` LIKE '%8!%%' ESCAPE '!