1

我有以下 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')   
4

3 回答 3

5

不,它相当于:

AND (wo.ci_cnc_date IS NULL OR p.prioid == '1 - Routine')    
于 2012-05-31T20:28:31.043 回答
4

德摩根定律:否定合取和析取。维基

于 2012-05-31T20:54:14.227 回答
3

这相当于:

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

请注意,x IS NOT NULLandx IS NULL通常是不同的运算符,一个不是另一个的否定。

PostgreSQL, both(1, NULL) IS NULL(1, NULL) IS NOT NULLyield FALSE(见小提琴

于 2012-05-31T21:09:46.283 回答