我不知道为什么有时候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/

10-14 14:56
查看更多