DISTINCT 述部

DISTINCT 述部は、2 つの式を比較し、その値が同一でない場合に TRUE に評価されます。

DISTINCT 述部の結果は、その入力式のいずれかまたは両方が NULL であるかどうかによって異なります。
入力式 IS DISTINCT FROM IS NOT DISTINCT FROM
両方の入力が非 NULL。 入力が同一ではない場合は TRUE、入力が同一の場合は FALSE に評価されます。<> 演算子と同等です。 入力が同一ではない場合は FALSE、入力が同一の場合は TRUE に評価されます。= 演算子と同等です。
1 つの入力が NULL。 TRUE に評価されます。 FALSE に評価されます。
両方の入力が NULL。 FALSE に評価されます。 TRUE に評価されます。
DISTINCT 述部の結果が NULL になることはありません。
構文図を読む構文図をスキップする expression1 IS NOT DISTINCT FROM expression2
expression1 および expression2
比較対象の式。

HV がホスト変数、T1 が 1 つの列 (C1) と 3 つの行を持つ表であるとします。
C1
----
1
2
NULL
  • HV=2 の場合、ステートメント
    SELECT * FROM T1 WHERE C1 IS DISTINCT FROM :HV;
    は行 1 および 3 を返します。
    HV=2 の場合、ステートメント
    SELECT * FROM T1 WHERE C1 IS NOT DISTINCT FROM :HV;
    は行 2 を返します。
  • HV=NULL の場合、ステートメント
    SELECT * FROM T1 WHERE C1 IS DISTINCT FROM :HV;
    は行 1 および 2 を返します。
    HV=NULL の場合、ステートメント
    SELECT * FROM T1 WHERE C1 IS NOT DISTINCT FROM :HV;
    は行 3 を返します。