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 になることはありません。
Read syntax diagramSkip visual syntax diagram 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 を返します。