JavaScriptが無効になっています。
この状態では一部の情報が表示されず、すべての機能を利用することができません。
SQL グループ比較条件
グループ比較条件は SQL において リスト、または、副問合せで戻される結果セットをいずれか(ANY、SOME)一致、全一致(ALL)を評価する。
グループ比較の条件述語は(WHERE、START WITH、CONNECT BY、HAVING)で使用するオペレーター(演算子)に使用する。
⇒ 単純比較条件 、LIKE、IN、BETWEEN AND、IS NULL 比較
表1
演算子 内容 ANY または SOME リストまたは問い合わせ結果とのいずれかの一致、比較条件(=、<、<= など)は表2 すべての演算子を使用できる ALL リストまたは問い合わせ結果との全一致、比較条件(=、<、<= など)は 表2 すべての演算子を使用できる
スカラーと値グループの比較
1つの式、または、値とグループ値を比較する場合はグループ比較は 表2 の演算子を利用できる。
1つの値とグループ比較条件の例(左辺が「より大きい」条件の場合)
SQL> select 1 from dual where 1 > ANY (0,1,2);
1
----------
1
上記 SQLを念のため説明: 1 は (0、1 または 2) のグループと比較して1つでも「より大きい」条件に一致するか? を評価する。
右辺のカッコ内は副問合せに置き換えてもよい。ANY の代わりに SOME を使用してもよい。
PL/SQL におけるグループ比較
PL/SQL ではグループ比較条件は使用できない。
ANY による比較条件
SQL> begin
2 if (('abc' ) = ANY ('abc' , 'xyz' )) then
3 dbms_output .put_line('aaaa' );
4 end if;
5 end;
6 /
if (('abc' ) = ANY ('abc' , 'xyz' )) then
*
行2でエラーが発生しました。:
ORA-06550: 行2、列14:
PLS-00204: 関数または疑似列=ANYはSQL文の中でしか使用できません。
IN 演算子であれば グループとの比較は可能
SQL> begin
2 if (('abc' ) IN ('abc' , 'xyz' )) then
3 dbms_output .put_line('aaaa' );
4 end if;
5 end;
6 /
aaaa
比較演算子
演算子 内容 = 等しい <> != ^= ¬= 等しくない ¬= は、あまり一般的でないプラットフォーム向け <> は標準SQLに規定されている不等号 > < (左辺が)より大きい、より小さい >= <= (左辺が)以上、以下
式リストと値グループの比較
複数の式、または、値とグループ値を比較する場合は「等号と不等号」のみ利用できる。(SQL のみ)
たとえば、姓と名は2つで1セットであることを念頭に氏名の条件一致を評価する。
SQL> select 1 from dual where ('鈴木' ,'一郎' ) <> ALL (('田中' ,'一郎' ), ('鈴木' ,'一郎' ));
レコードが選択されませんでした。
念のため説明:右辺の名前のグループすべてと比較して「鈴木:一郎」とする式のセットは存在しないか?
SQL> select 1 from dual where ('鈴木' ,'一郎' ) = ANY (('田中' ,'一郎' ), ('鈴木' ,'一郎' ));
1
----------
1
念のため説明:右辺の名前のグループに「鈴木:一郎」とする式のセットは1つでも存在するか?
右辺のカッコ内は以下のように副問合せに置き換えてもよい。
SQL> select 1 from dual where ('鈴木' ,'一郎' ) = ANY (
select last_name, first_name from username_list
where last_name like '鈴%'
);
比較条件に関連する内容