基本述部
基本述部 は 2 つの値を比較したり、値の集合を別の値の集合と比較したりします。
注:
- 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の一部の値に対して真です。
- 不明 - 比較が真でも偽でもない場合。

| 述部 | 下記の場合にのみ真となる |
|---|---|
x = y |
x は y に等しい。 |
x <> y |
x は y に等しくない。 |
x < y |
x は y より小さい。 |
x > y |
x は y より大きい。 |
x <= y |
x は y より小さいか等しい。 |
x >= y |
x は y より大きいか等しい。 |
値 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 符号を含む演算子は同等の 演算子に置き換えてください。 例えば、'<>' を'¬='に、 '<=' を '¬>'、および '>=' を '¬<'に置き換えます。
