指定した値の範囲と比較

条件式でカラムに含まれる値が範囲内に含まれているかどうかを調べたい場合、比較演算子と論理演算子を使えば次のように記述することができます。

SELECT カラム名 , ... FROM テーブル名
 WHERE カラム >= 値1 AND カラム <= 値2;

BETWEEN句を使うと、範囲内に含まれているかどうかをもう少し簡潔に記述することができます。書式は次の通りです。

SELECT カラム名 , ... FROM テーブル名
 WHERE カラム BETWEEN 値1 AND 値2;

上記では、カラムに格納された値が値1から値2の範囲に含まれている場合にデータを取得します。(値1と値2の場合も含みます)。

またNOT演算子を組み合わせることで指定した範囲に含まれて居ない場合のデータを取得することもできます。

SELECT カラム名 , ... FROM テーブル名
 WHEREカラム NOT BETWEEN 値1 AND 値2;

具体的には次のように使います。

create table customer(id integer, old integer, address text);

select * from customer where old between 19 and 24;
select * from customer where id not between 1 and 10;

最初のSELECT文では「old」カラムの値が19以上24以下の場合にデータを取得します。2番目のSELECT文では「id」カラムの値が1以上10以下ではなかった場合にデータを取得します。

サンプル

では実際に試してみます。

次のようなデータが格納されたテーブルを対象にします。

p4-1

「old」カラムの値が20から29の範囲内のデータだけを取得してみます。

select * from customer where old between 20 and 29;

p4-2

逆に「old」カラムの値が20から29の範囲内ではないデータだけを取得してみます。

select * from customer where old not between 20 and 29;

p4-3

このようにBETWEEN句を使うことで範囲指定の形で取得するデータを限定することができます。