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

Search keyword with LIKE %[keyword]%

我有一个 TransactionDetails table 和 TransactionIdTransactionDetail 列,它们用于跟踪应用程序中的所有事务。

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 

我只想过滤具有 [Log] 的 TransactionDetail 列 (Log, Logged 关键字也存在于其他行)。带有 [] 的搜索查询被视为正则表达式模式。我怎样才能跳过它并只获取所需的详细信息。

我试过在 [] 前面的 \ 转义字符,但没有 return 任何结果。

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

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

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

正如 jarlh the ESCAPE 选项中提到的那样:

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

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

更新:根据 t-clausen.dk 在此 中的回复,escape_character 不需要 ]。所以下面的代码也有效。

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