我不知道为什么有时候LIKE需要ANY,而其他时候却需要ALL,这让我发疯。我觉得我应该在两种情况下都可以使用ANY(我试图选择括号中任何正则表达式之后的记录)。
出于某种原因,第一个LIKE(带有ANY)可以很好地工作-它返回带有狗杂,血统或善良的所有记录。
但是,第二个LIKE需要ALL。否则,它将不会遗漏任何有关零食,用品或湿纸巾的记录。但为什么?我觉得ANY是这里的适当形式。
where dsc_item like any ('%DOG CHOW%','%PEDIGREE%','%BENEFUL%')
and dsc_comm not like all ('%TREATS%','%SUPPLIES%', '%WET%')
最佳答案
LIKE ANY
转换为OR
ed条件,但LIKE ALL
转换为AND
:
where
( dsc_item like '%DOG CHOW%'
OR dsc_item like '%PEDIGREE%','%BENEFUL%'
)
and
( dsc_comm not like '%TREATS%'
AND dsc_comm not like '%SUPPLIES%'
AND dsc_comm not like '%WET%'
)
如果将
AND
替换为OR
,则就像col <> 1 OR col <> 2
,它对每个非NULL行都是正确的。关于sql:像任何vs像所有,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40475982/