У мене був запит (для Postgres та Informix) із NOT INпропозицією, що містить підзапит, який у деяких випадках повертає NULLзначення, внаслідок чого цей пункт (і весь запит) нічого не повертають.
Який найкращий спосіб зрозуміти це? Я вважав це NULLяк щось, що не має значення, і тому не очікував, що запит не вдасться, але, очевидно, це не правильний спосіб думати NULL.
x <> NULLце вирішує питанняFALSE, ви можете розраховуватиNOT (x <> NULL)на оцінкуTRUE, а це не так. Обидва оцінюютьUNKNOWN. Хитрість полягає в тому, що рядок вибирається лише в тому випадку, якщо вWHEREпункті (якщо він присутній) оцінюється значенняTRUE- рядок опущено, якщо цей пункт оцінюєFALSEабоUNKNOWN. Така поведінка (загалом і зокремаNOT INприсудок) відповідає стандарту SQL.