比較述部

比較述部 は、 1 つの値もしくは複数の値と、値の集合との間で比較を行います。

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

expression を指定した場合、fullselect1 は単一の結果列を戻す必要があり、NULL か非 NULL かは関係なく、戻す値の数は任意です。 結果は、指定される演算子によって次のように異なります。

  • 演算子が ALL の場合、述部の結果は次のとおりです。
    • 真 - 全選択で戻された値がない場合、または指定した関係が全選択により戻されたすべての値について真である場合。
    • 偽 - 指定した関係が全選択により戻された、少なくとも 1 つの値について偽である場合。
    • 不明 - 指定した関係が全選択により戻された値について偽でなく、NULL 値のために不明となった比較が少なくとも 1 つある場合。
  • 演算子が SOME または ANY の場合、述部の結果は次のとおりです。
    • 真 - 指定した関係が全選択により戻された、少なくとも 1 つの値について真である場合。
    • 偽 - 全選択で戻された値がない場合、または指定した関係が全選択により戻されたすべての値について偽である場合。
    • 不明 - 指定した関係が全選択により戻された値について真でなく、NULL 値のために不明となった比較が少なくとも 1 つある場合。

row-value-expression を指定した場合、fullselect2 から戻される結果列の数は、row-value-expression によって指定される値式の数と同じであることが必要です。また、 fullselect2 が戻す値の行数は任意です。 行値表現の対応する式のデータ・タイプは、互換であることが必要です。 row-value-expression のそれぞれの式の値が、fullselect2 の対応する結果列の値と比較されます。 述部の値は、指定される演算子によって次のように異なります。

  • 演算子が ALL の場合、述部の結果は次のとおりです。
    • 真 - fullselect2 の結果が空の場合、または指定した関係が fullselect2 から戻されるすべての行に対して真である場合。
    • 偽 - 指定した関係が、fullselect2 から戻された行の少なくとも 1 つに対して偽である場合。
    • 不明 - 指定した関係が、fullselect2 から戻されたどの行に対しても偽でなく、NULL 値のために不明となった比較が少なくとも 1 つある場合。
  • 演算子が SOME または ANY の場合、述部の結果は次のとおりです。
    • 真 - 指定した関係が、fullselect2 から戻された行の少なくとも 1 つに対して真である場合。
    • 偽 - 全選択の結果が空の場合、または指定した関係が fullselect2 から戻されるすべての行に対して偽である場合。
    • 不明 - 指定した関係が、fullselect2 から戻されたどの行に対しても真でなく、NULL 値のために不明となった比較が少なくとも 1 つある場合。

比較述部は、IN 述部と等価です。 等価な定量化されたIN述語の例については、表1 を参照してください。

例: 次の表を使用して、以下の例を参照してください。 すべての例で、TBLA の行 n は、COLA の値が nである TBLA 内の行を参照します。
表 1. TBLA
COLA
1
2
3
4
表 2. TBLB
COLB COLC
2 2
3 – –
表 3. TBLC
COLB COLC
2 2
例 1: 以下の述部では、全選択は値 2 および 3 を戻します。 この述部は、TBLA の行 1、2、および 3 については偽であり、行 4 については真です。
  COLA > ALL(SELECT COLB FROM TBLB
         UNION
         SELECT COLB FROM TBLC)
例 2: 以下の述部では、全選択は値 2 および 3 を戻します。 述部は、TBLA の行 1 と行 2 に対しては偽、行 3 と行 4 に対しては真です。
  COLA > ANY(SELECT COLB FROM TBLB
         UNION
         SELECT COLB FROM TBLC)
例 3: 以下の 述部において、全選択は 2 という値および NULL 値を戻します。 この述部は、TBLA の行 1 と行 2 については偽であり、行 3 と行 4 については不明です。 結果は空の表になります。
  COLA > ALL(SELECT COLC FROM TBLB
         UNION
         SELECT COLC FROM TBLC)
例 4: 以下の 述部において、全選択は 2 という値および NULL 値を戻します。 この述部は 、TBLA の行 1 と 2 については不明、行 3 と 4 については真です。
  COLA > SOME(SELECT COLC FROM TBLB
         UNION
         SELECT COLC FROM TBLC)
例 5: 以下の 述部において、全選択は空の結果列を戻します。 したがって、この述部は TBLA のすべての行について真です。
  COLA < ALL(SELECT COLB FROM TBLB WHERE COLB>3
         UNION
         SELECT COLB FROM TBLC WHERE COLB>3)
例 6: 以下の 述部において、全選択は空の結果列を戻します。 したがって、この述部は TBLA のすべての行について偽です。
  COLA < ANY(SELECT COLB FROM TBLB WHERE COLB>3
         UNION
         SELECT COLB FROM TBLC WHERE COLB>3)
COLA が TBLA の 1 つ以上の行で NULL 値であっても、 すべての行の TBLA について述部は偽のままです。