4

最初のテイク、クラッジソリューション、センチネルアプローチ(プログラムでセンチネル値の入力を許可しないことが不可欠です):

 select coalesce(a, -2147483648) = coalesce(b, -2147483648) as is_equal -- a little postgresism

プログラムでセンチネル値をブロックするのを忘れ、ユーザーが B フィールドに -2147483648 を入力し、A が null であるとします。上記のコードは true を報告し、false を報告する必要があり、true または null を報告すべきではありません。

null 許容フィールドの等価性を比較する最も簡潔な方法は何ですか? A == B は、フィールドが null 可能かどうかに関係なく、true または false のみを報告する必要があります。

4

2 に答える 2

10

おそらくIS [NOT] DISTINCT FROMがここで役立ちます。

于 2009-03-25T09:48:41.207 に答える
0

演算子<=>は、他のデータベースエンジンで必要なことを実行します。ポストグレスではありませんか?それ以外の場合は、a is null and b is null or (a is not null and b is not null and a == b)動作するはずです。であるため、これFALSE AND NULLは機能しFALSEます。

于 2009-03-25T09:24:51.263 に答える