SQL AND NOT和AND等价物

时间:2012-05-31 20:26:27

标签: sql logic

我有以下SQL语句:

AND NOT (wo.ci_cnc_date IS NOT NULL AND p.prioid != '1 - Routine')

MSDN声明“使用NOT否定表达式。”

如果确实如此,则上述陈述将等同于:

AND (wo.ci_cnc_date IS NULL AND p.prioid == '1 - Routine')   

3 个答案:

答案 0 :(得分:5)

没有。它等同于:

AND (wo.ci_cnc_date IS NULL OR p.prioid == '1 - Routine')    

答案 1 :(得分:4)

德摩根的法律:否定连接和分离。 Wiki

答案 2 :(得分:3)

这相当于:

AND (NOT wo.ci_cnc_date IS NOT NULL OR p.prioid = '1 - Routine')

请注意,x IS NOT NULLx IS NULL一般来说是不同的运算符,不是对另一运算符的否定。

PostgreSQL中,(1, NULL) IS NULL(1, NULL) IS NOT NULL都会产生FALSE(请参阅fiddle