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

时间:2016-02-09 13:39:22

标签: sql sql-server sql-like

我有一个TransactionDetails表,其中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 

我想过滤仅具有 [日志] 的TransactionDetail列(日志,已记录关键字也存在于其他行中)[]的搜索查询被视为正则表达式模式。我该如何跳过它并仅获取所需的详细信息。

我在\[前面尝试了]转义字符,但它没有返回任何结果。

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

预期结果:

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

SQL小提琴:http://sqlfiddle.com/#!3/d69f3d/1

2 个答案:

答案 0 :(得分:3)

通过将SQL通配符放入组中来逃避它,即:

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

答案 1 :(得分:2)

正如URI::Generic#+中的 jarlh 所述,comment选项也有效:

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

工作演示: ESCAPE

更新:根据此http://sqlfiddle.com/#!3/d69f3d/37 t-clausen.dk 的回复,]不需要escape_character。所以下面的代码也可以。

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