最初のテイク、その場しのぎの解決策、センチネルアプローチ(それはあなたのプログラムがセンチネル値の入力を許可してはならないことが肝要です):SQL平等/ NULL可能値と不等比較
select coalesce(a, -2147483648) = coalesce(b, -2147483648) as is_equal -- a little postgresism
あなたがセンチネル値をブロックするために忘れてしまったとしましょうプログラム上で、ユーザーがBフィールドに-2147483648を入力し、Aがヌルです。上記のコードはtrueを報告し、falseを報告し、trueまたはnullを報告してはいけません。
nullableフィールドで平等を比較する最も簡潔な方法は何ですか? A == Bは、フィールドがNULL値であるかどうかにかかわらず、trueまたはfalseのみを報告する必要があります。
は、postgresql(または他のrdbmsでも問題ありません)では機能しません。そのオペレータのための幸運なmysqlの野郎: - とにかく、もしこのケースでいくつかのmysqlersのチャンスがある場合は – Hao
少なくともOracleでは、通常の演算子はnull値で期待どおりに動作しません... – Thilo