我有一个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
我想过滤仅具有 [日志] 的TransactionDetail列(日志,已记录关键字也存在于其他行中) 。 []
的搜索查询被视为正则表达式模式。我该如何跳过它并仅获取所需的详细信息。
我在\
,[
前面尝试了]
转义字符,但它没有返回任何结果。
SELECT *
FROM TransactionDetails
WHERE TransactionDetail LIKE '%\[Log\]%'
预期结果:
[Blah][Log] 20 Records Inserted
[Blah][Log] 10 Records Deleted
答案 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 '#'