使用 LIKE %[keyword]% 搜索关键字
Search keyword with LIKE %[keyword]%
我有一个 TransactionDetails
table 和 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
我只想过滤具有 [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 '#'
我有一个 TransactionDetails
table 和 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
我只想过滤具有 [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 在
SELECT *
FROM TransactionDetails
WHERE TransactionDetail LIKE '%#[Log#]%' ESCAPE '#'
工作演示: http://sqlfiddle.com/#!3/d69f3d/37
更新:根据 t-clausen.dk 在此 ]
。所以下面的代码也有效。
SELECT *
FROM TransactionDetails
WHERE TransactionDetail LIKE '%#[Log]%' ESCAPE '#'