代码之家  ›  专栏  ›  技术社区  ›  Arulkumar KP.

使用LIKE%[关键字]%搜索关键字

  •  1
  • Arulkumar KP.  · 技术社区  · 8 年前

    我有一个 TransactionDetails 带有的表格 TransactionId , TransactionDetail 列,这些列用于跟踪应用程序中的所有事务。

    TransactionDetail的示例记录包括:

    [Blah][Log] 20 Records Inserted
    [Blah][Exception] Fails on INSERT INTO
    [Blah][Error] Authentication Fails Logged
    [Blah][Warning] Null value is eliminated by an aggregate
    [Blah][Log] 10 Records Deleted 
    

    我想筛选具有 [日志] 只有 ( 日志,已记录 关键字也存在于其他行中) 。搜索查询 [] 考虑作为正则表达式模式。我怎么能跳过这一步,只获得所需的详细信息。

    我试过了 \ 前面的转义字符 [ , ] ,但它不返回任何结果。

    SELECT *
    FROM TransactionDetails
    WHERE TransactionDetail LIKE '%\[Log\]%'
    

    预期结果:

    [Blah][Log] 20 Records Inserted
    [Blah][Log] 10 Records Deleted 
    

    SQL Fiddle: http://sqlfiddle.com/#!3/d69f3d/1

    2 回复  |  直到 8 年前
        1
  •  3
  •   Zbynek Vyskovsky - kvr000    8 年前

    通过将SQL通配符放入组中来转义它们,即:

    SELECT *
    FROM TransactionDetails
    WHERE TransactionDetail LIKE '%[[]Log]%'
    
        2
  •  2
  •   Community Navdeep Singh    7 年前

    如所述 jarlh公司 comment 这个 ESCAPE 选项也适用:

    SELECT *
    FROM TransactionDetails
    WHERE TransactionDetail LIKE '%#[Log#]%' ESCAPE '#'
    

    工作演示: http://sqlfiddle.com/#!3/d69f3d/37

    更新:根据回复 t条款.dk 在这个 comment ,escape_character对于 ] 。所以下面的代码也有效。

    SELECT *
    FROM TransactionDetails
    WHERE TransactionDetail LIKE '%#[Log]%' ESCAPE '#'