我在一个表上有一个简单的选择查询,但是在LIKE运算符中具有不同的值。查询如下:
SELECT *
FROM BatchServices.dbo.TaskLog
WHERE EntryTime BETWEEN '20190407' AND '20190408' AND
TaskGroup LIKE '%CSR%' AND
(LogText LIKE '%error%' OR LogText LIKE '%fail%')
上面的查询很好,可以向我返回预期的结果,但我不想在查询中包含多个LIKE,因此我已经尝试过类似
SELECT *
from BatchServices.dbo.TaskLog
WHERE taskgroup = 'csr' AND
LogText IN ( '%error%','%fail%') AND
EntryTime>'2019-04-07'
ORDER BY EntryTime ASC
此查询没有给我任何结果。 我期望查询看起来比我返回结果的查询更智能。有帮助吗?
答案 0 :(得分:0)
在like operator
条件下使用OR
SELECT * from BatchServices.dbo.TaskLog WHERE taskgroup ='csr' AND
(LogText like '%error%' or LogText like '%fail%')
AND EntryTime>'2019-04-07'
ORDER BY EntryTime ASC
答案 1 :(得分:0)
LIKE运算符不是问题。这是领先的通配符。除非您不能摆脱这些限制,否则您的优化选项将仅限于确保您在EntryTime上具有覆盖索引...然后用所需的特定列替换“ *”。