【问题标题】:How to write the LIKE syntax where the search term includes a percentage (%)?如何编写搜索词包含百分比 (%) 的 LIKE 语法?
【发布时间】:2018-03-23 05:53:30
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: sql sql-server tsql sql-like


    【解决方案1】:

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

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

    Demo

    【讨论】:

    • 简单易行...:)
    【解决方案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 给出的以下答案,这也是一种简单的方法。

    【讨论】:

      【解决方案3】:

      只需将 where 子句更改为

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多