我有以下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')
答案 0 :(得分:5)
没有。它等同于:
AND (wo.ci_cnc_date IS NULL OR p.prioid == '1 - Routine')
答案 1 :(得分:4)
答案 2 :(得分:3)
这相当于:
AND (NOT wo.ci_cnc_date IS NOT NULL OR p.prioid = '1 - Routine')
请注意,x IS NOT NULL
和x IS NULL
一般来说是不同的运算符,不是对另一运算符的否定。
在PostgreSQL
中,(1, NULL) IS NULL
和(1, NULL) IS NOT NULL
都会产生FALSE
(请参阅fiddle)