次の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')
いいえ。次のようになります。
AND (wo.ci_cnc_date IS NULL OR p.prioid == '1 - Routine')
ド・モルガンの法則:論理積と論理和を否定します。ウィキ
これは次のようになります。
AND (NOT wo.ci_cnc_date IS NOT NULL OR p.prioid = '1 - Routine')
x IS NOT NULL
とx IS NULL
は、一般的に言えば、異なる演算子であり、一方が他方の否定ではないことに注意してください。
で、とyieldPostgreSQL
の両方(フィドルを参照)(1, NULL) IS NULL
(1, NULL) IS NOT NULL
FALSE