基本述部

基本述部 は 2 つの値を比較したり、値の集合を別の値の集合と比較したりします。

構文図を読むビジュアルシンタックスダイアグラムをスキップする=<>1<><=>= 式row-value-expression=<>1<><=>=row-value-expression
注:
  • 1 その他の比較演算子もサポートされています。1

expression が全選択の場合、全選択は単一値 (NULL か非 NULL かは関係なく) を格納する単一の結果列を戻す必要があります。 どちらかのオペランドの値が NULL であるかまたは全選択の結果が空の場合、 この述部の結果は不明です。 それ以外の場合の結果は、真か偽のどちらかになります。

演算子の左側に row-value-expression を指定する場合は、同数の値式がある別の row-value-expression を右側に指定する必要があります。 row-value-expressions の対応する式または列のデータ・タイプは、互換であることが必要です。

変更の開始比較演算子が <、<=、>、または >= の場合、arow-value-expression は非決定性式、外部アクションを持つ関数、またはスカラー fullselect を参照してはなりません。変更の終わり

左側にあるそれぞれの式の値が、右側にある対応する式の値と比較されます。 述部の結果は、以下に示すように、演算子によって異なります。

  • 演算子が = の場合、述部の結果は次のとおりです。
    • 真 - 対応する値式のすべての対が真と評価される場合。
    • 偽 - 対応する値式のいずれか 1 対が偽と評価される場合。
    • 不明 - 比較が真でも偽でもない場合。 つまり、対応する値式の少なくとも 1 つの比較が NULL 値のために不明であり、対応する値式の対で偽と評価されるものがない場合。
  • 演算子が <> の場合、述語 (Rx1,Rx2,...,Rxn) <> (Ry1,Ry2,...,Ryn) の結果は次のようになります
    • Rクシー= RイーIの何らかの値に対して false と評価された場合にのみ真となります。 つまり、互いに等しくない NULL 以外の値 (Rクシー と Rイー) のペアが少なくとも 1 つ存在します。
    • Rクシー= RイーIのすべての値について真と評価される場合に限り、偽。 つまり、Rx1、Rx2、...、R です。XN) = (Ry1, Ry2, ..., R動的) は true です。
    • 不明 - 比較が真でも偽でもない場合。 つまり、いずれかの i 値に対して Rxi または Ryi が NULL 値で、かつ Rxj=Ryj が偽と評価される j 値がない場合。
  • 変更の開始演算子が < の場合、述部の結果は次のとおりです。
    • 対応する値式の最初の N ペアが等しく、次のペアの左側の値式が N の一部の値の右側の値式より小さい場合にのみ真になります。 つまり、Rクシー = RイーI < N のすべての値に対して真であり、RXN < R動的Nの一部の値に対して真です。
    • False-対応する値式のすべてのペアが等しい場合 (RX = RY が true の場合)、または対応する値式の最初の N のペアが等しく、次のペアの右の値式が N のいずれかの値の左の値式より小さい場合。 つまり、Rクシー = RイーI < N のすべての値に対して真であり、RXN > = R動的Nの一部の値に対して真です。
    • 不明 - 比較が真でも偽でもない場合。
    変更の終わり
  • 変更の開始演算子が <= の場合、述部の結果は次のとおりです。
    • 対応する値式の最初の N ペアが等しく、次のペアの左側の値式が N の一部の値の右側の値式以下である場合にのみ真になります。 つまり、Rクシー = RイーI < N のすべての値に対して真であり、RXN < = R動的Nの一部の値に対して真です。
    • False-対応する値式のすべてのペアが等しい場合 (RX = RY が true の場合)、または対応する値式の最初の N のペアが等しく、次のペアの右の値式が N のいずれかの値の左の値式より小さい場合。 つまり、Rクシー = RイーI < N のすべての値に対して真であり、RXN > R動的Nの一部の値に対して真です。
    • 不明 - 比較が真でも偽でもない場合。
    変更の終わり
  • 変更の開始演算子が> の場合、述部の結果は次のようになります。
    • 対応する値式の最初の N ペアが等しく、次のペアの左側の値式が、Nのいずれかの値の右側の値式より大きい場合にのみ真になります。 つまり、Rクシー = RイーI < N のすべての値に対して真であり、RXN > R動的Nの一部の値に対して真です。
    • False-対応する値式のすべてのペアが等しい場合 (RX = RY が true の場合)、または対応する値式の最初の N のペアが等しく、次のペアの右の値式が Nのいずれかの値の左の値式より大きい場合。 つまり、Rクシー = RイーI < N のすべての値に対して真であり、RXN < = R動的Nの一部の値に対して真です。
    • 不明 - 比較が真でも偽でもない場合。
    変更の終わり
  • 変更の開始演算子が> = の場合、述部の結果は次のようになります。
    • 真-対応する値式の最初の N ペアが等しく、次のペアの左側の値式が N のいずれかの値の右側の値式以上である場合に限られます。 つまり、Rクシー = RイーI < N のすべての値に対して真であり、RXN > = R動的Nの一部の値に対して真です。
    • False-対応する値式のすべてのペアが等しい場合 (RX = RY が true の場合)、または対応する値式の最初の N のペアが等しく、次のペアの右の値式が Nのいずれかの値の左の値式より大きい場合。 つまり、Rクシー = RイーI < N のすべての値に対して真であり、RXN < R動的Nの一部の値に対して真です。
    • 不明 - 比較が真でも偽でもない場合。
    変更の終わり
表 1. xyの値について
述部 下記の場合にのみ真となる
x = y xy に等しい。
x <> y xy に等しくない。
x < y xy より小さい。
x > y xy より大きい。
x <= y xy より小さいか等しい。
x >= y xy より大きいか等しい。
値 x と y の例:
   EMPNO = '528671'
   SALARY < 20000
   PRSTAFF <> :VAR1
   SALARY >=  (SELECT AVG(SALARY) FROM DSN8C10.EMP)
例: 「SECRET」プロジェクトの責任者である従業員の、 名前、ファーストネーム、および給与をリストします。 この従業員は、PROJA1 表または PROJA2 表のどちらかにあります。 従業員が両方の表にある場合に、UNION を使用して、重複する RESPEMP 値を除去します。
  SELECT LASTNAME, FIRSTNAME, SALARY
    FROM DSN8C10.EMP X
    WHERE EMPNO = (
  SELECT RESPEMP
    FROM PROJA1 Y
    WHERE MAJPROJ = 'SECRET'
  UNION
  SELECT RESPEMP
    FROM PROJA2 Z
    WHERE MAJPROJ = 'SECRET');
1 感嘆符が使用されているコードページでは、基本および数値化された述語において、比較演算子の次の形式もサポートされています。X'5A':!=、! これらの形式の演算子は、これらの演算子を使用している既存の SQL ステートメントを サポートするためにのみ提供されているものであり、新規 SQL ステートメントを作成する際に使用することは お勧めしません。

論理 NOT 符号 (¬) は、DBMS 間で受け渡されるステートメントで構文解析エラー を起こす可能性があります。 この問題が発生するのは、ステートメントでソースの CCSID と ターゲットの CCSID の特定の組み合わせによる文字変換が行われる場合です。 この問題の発生を防止するために、NOT 符号を含む演算子は同等の 演算子に置き換えてください。 例えば、'<>' を'¬='に、 '<=' を '¬>'、および '>=' を '¬<'に置き換えます。