比較述部

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

構文図を読む構文図をスキップするexpression =  <> 1 <  >  <=  >= SOMEANYALL(fullselect1) row-value-expression = SOMEANY(fullselect2)
注:
  • 1 基本述部および比較述部では、^=、^<、^>、!=、!<、および !> の形式の比較演算子もサポートされています。コード・ページ 437、819、および 850 では、¬=、¬<、および ¬> の形式もサポートされています。 このような製品固有の比較演算子の形式は、 このような演算子を使用する既存の SQL ステートメントをサポートすることのみを目的としており、 新たに SQL ステートメントを書く場合には使用しないようお勧めします。

全選択は、 述部演算子の左側に指定されている式の数と同じ数の列を識別しなければなりません (SQLSTATE 428C4)。 全選択は、任意の行数を戻すことができます。

ALL を指定した場合、
  • 全選択が値をまったく戻さない場合、または指定したリレーションシップが、 全選択によって戻される値のすべてに対して「真」である場合、 述部の結果は「真」となります。
  • 指定したリレーションシップが、全選択によって戻される値の少なくとも 1 つに対して「偽」である場合、 述部の結果は「偽」となります。
  • 指定したリレーションシップが、全選択によって戻されるどの値に対しても「偽」でなく、 少なくとも 1 つの比較が NULL 値のために「不明」である場合、 述部の結果は「不明」となります。
SOME または ANY を指定した場合、
  • 指定したリレーションシップが、全選択によって戻される少なくとも 1 つの行の各値に対して「真」である場合、 述部の結果は「真」になります。
  • 全選択が行を戻さない場合、または指定したリレーションシップが、 全選択によって戻されるすべての行の少なくとも 1 つの値に対して「偽」である場合、 述部の結果は「偽」になります。
  • 指定したリレーションシップがどの行に対しても「真」でなく、 少なくとも 1 つの比較が NULL 値のために「不明」である場合、 述部の結果は「不明」になります。
例: 以降の例を参照する場合、次の表を使用してください。
図 1. 比較述部の表の例
比較述部の表の例

例 1

  SELECT COLA FROM TBLAB 
     WHERE COLA = ANY(SELECT COLX FROM TBLXY)

結果は 2、3 です。 副選択は (2,3) を戻します。 行 2 と 3 の COLA は、それらの値の少なくとも 1 つに等しくなっています。

例 2

  SELECT COLA FROM TBLAB 
     WHERE COLA > ANY(SELECT COLX FROM TBLXY)

結果は 3、4 です。 副選択は (2,3) を戻します。 行 3 と 4 の COLA は、それらの値の少なくとも 1 つより大きくなっています。

例 3

  SELECT COLA FROM TBLAB 
     WHERE COLA > ALL(SELECT COLX FROM TBLXY)

結果は 4 です。 副選択は (2,3) を戻します。 それらの値の両方より大きいものは、行 4 の COLA しかありません。

例 4

  SELECT COLA FROM TBLAB 
     WHERE COLA > ALL(SELECT COLX FROM TBLXY
                         WHERE COLX<0)

結果は 1、2、3、4、NULL 値です。副選択は値を戻しません。したがって、述部は TBLAB のすべての行に対して真です。

例 5

SELECT * FROM TBLAB 
   WHERE (COLA,COLB+10) = SOME (SELECT COLX, COLY FROM TBLXY)

副選択は TBLXY からすべての項目を戻します。述部は副選択に対して真であるため、結果は次のようになります。

COLA        COLB       
----------- -----------
          2          12
          3          13

例 6

SELECT * FROM TBLAB 
   WHERE (COLA,COLB) = ANY (SELECT COLX,COLY-10 FROM TBLXY)

副選択は TBLXY から COLX および COLY-10 を戻します。述部は副選択に対して真であるため、結果は次のようになります。

COLA        COLB       
----------- -----------
          2          12
          3          13