ORACLE SQL リファレンス(逆引き)

ORACLE SQL リファレンス

Web oracle.se-free.com
複数の値の候補を指定する(IN、ANY、SOME、ALL)
スポンサード リンク

複数の値の候補を検索条件に指定するには以下のようになります。

[NOT] IN (検索リスト) 検索リストで指定した値のどれか1つと一致するレコードを検索します。
[NOT] 比較演算子 ANY (検索リスト)
[NOT] 比較演算子 SOME (検索リスト)
検索リストで指定した値のどれか1つと比較して、一致したレコードを検索します。比較に指定する演算子は=、!=、>、<、<=、>=のいずれか。
[NOT] 比較演算子 ALL (検索リスト) 検索リストで指定した値の全てと比較して、一致したレコードを検索します。比較に指定する演算子は=、!=、>、<、<=、>=のいずれか。
IN句を使用するより、EXISTS句を使用する方が、パフォーマンスが大幅に改善されることがあるので、IN句を使用するときは、EXISTS句で代替することも検討しましょう。詳細はチューニングを参照。


例1) 列「job_id」が'JOB001'または'JOB003'のレコードを検索する(IN)
select *
  from employees
 where
   job_id in ('JOB001','JOB003')
= ANY (検索リスト) と同じになる


例2) 列「job_id」に'JOB001'と'JOB003'のいずれも一致しないレコードを検索する(NOT IN)
select *
  from employees
 where
   job_id not in ('JOB001','JOB003')
 != ALL と同じ


例3) 列「salary」が1000もしくは2000以上のレコードを検索する(ANY)
select *
  from employees
 where
   salary >= any (1000,2000)


例4) 列「salary」が1000と2000のいずれよりも大きいレコードを検索する(ALL)
select *
  from employees
 where
   salary >= all (1000,2000)


例5) 表「job_mst」の列「job_kbn」が'1'のレコードの列「job_id」のいずれかに一致するレコードを表「employees」から検索する(副問合せ)
select *
  from employees
 where
   job_id in (select job_id from job_mst where job_kbn = '1')
検索リストは副問合せによる指定も可能。ANY、SOME、ALLも同様


スポンサード リンク


基本的な比較(=、<>、> など)
論理比較(AND、OR、NOT)
文字列の一部と比較(LIKE)
文字列の一部を正規表現を使用して比較(REGEXP_LIKE)
NULLデータの比較
複数の値の候補を指定する(IN、ANY、SOME、ALL)
レコードの存在の有無を条件にする(EXISTS)

SQL(DML) へ
忘れっぽいエンジニアのオラクルSQLリファレンス TOPへ