Saya punya permintaan (untuk Postgres dan Informix) dengan NOT INklausa yang berisi subquery yang dalam beberapa kasus mengembalikan NULLnilai, menyebabkan klausa itu (dan seluruh permintaan) gagal mengembalikan apa pun.
Apa cara terbaik untuk memahami ini? Saya dianggap NULLsebagai sesuatu yang tidak memiliki nilai, dan karena itu tidak mengharapkan permintaan gagal, tetapi jelas itu bukan cara yang benar untuk dipikirkan NULL.
x <> NULLsebagai penyelesaianFALSE, Anda akan mengharapkanNOT (x <> NULL)untuk mengevaluasiTRUE, dan ternyata tidak. Keduanya mengevaluasiUNKNOWN. Kuncinya adalah bahwa baris dipilih hanya jikaWHEREklausa (jika ada) mengevaluasi keTRUE- baris dihilangkan jika klausul mengevaluasi salah satuFALSEatauUNKNOWN. Perilaku ini (secara umum, dan untukNOT INpredikat pada khususnya) diamanatkan oleh standar SQL.