【初学者必見!】SQLの基本、実務使用例を徹底解説!BETWEEN編

サムネイル SQL

※この記事にはプロモーションが含まれています。

ふりかえり

筆者
筆者

本記事は、SQLの基本、実務使用例編になります。

SQLの基礎に関しましては、

【初学者必見!】SQLの超基礎編の記事をご覧くださいませ。

A子
A子

本編に入ります!

BETWEENの基本構文

筆者
筆者

まずは、基本構文から見ていきましょう!

カラム名 BETWEEN 最小値 AND 最大値

A子
A子

ANDで最小値と最大値を挟んでいるね。

筆者
筆者

はい、そうです!

ある値が範囲の中にあるかどうか」を調べたいときに使うのが BETWEEN 演算子 です。

この構文は、「カラムの値が、最小値から最大値までの間にあるかどうか」をチェックします。

そして、最小値・最大値の両方を含みます(境界も含まれる)

BETWEEN は「〜の間にある」を調べたいときに使う値が範囲の中にあるかチェック
範囲の 最小値と最大値の両方を含む境界の値も含まれる(=以上、=以下)
数値・日付・文字列に使えるいろんなデータ型に対応しています
書き方がシンプルで見やすい>=<= を両方書かなくてよい

実務レベルの使用例を見ていこう!

筆者
筆者

実際に、SQLを使用してデータを確認していきましょう。

SQLに関しては以下を使用して解説していきます。

create table文、select文、insert文、update文、delete文、

drop table文、につきましては、過去にアップロードした

【初学者必見!】SQLの超基礎編の記事をご覧くださいませ。

A子
A子

目次の、「ふりかえり」のところにそれぞれの記事のリンクが

貼ってあるよ!

または、サイドバーのカテゴリーにSQLがあるから、そちらからでも

参照できます!

[事前準備]今回、実行するSQLの一覧

-- 申請管理情報テーブルの作成
create table 申請管理情報 (
    STAFF_NO varchar2(10) not null,   -- 職員番号 (Staff Number) 
    APPLI_NO varchar2(10) not null,   -- 申請番号 (Application Number) 
    APPLI_DATE date,                  -- 申請年月日 (Application Date) 
    DEPARTMENT varchar2(10),          -- 部署名(Department)
    constraint PK_申請管理情報 primary key (STAFF_NO, APPLI_NO)

);

insert into 申請管理情報 (STAFF_NO, APPLI_NO, APPLI_DATE, DEPARTMENT) 
values ('1001', 'A001', TO_DATE('2024-02-25', 'YYYY-MM-DD'),'営業');
insert into 申請管理情報 (STAFF_NO, APPLI_NO, APPLI_DATE, DEPARTMENT) 
values ('1001', 'A002', TO_DATE('2024-02-26', 'YYYY-MM-DD'),'営業');
insert into 申請管理情報 (STAFF_NO, APPLI_NO, APPLI_DATE, DEPARTMENT) 
values ('1002', 'A003', TO_DATE('2024-02-27', 'YYYY-MM-DD'),'開発');
insert into 申請管理情報 (STAFF_NO, APPLI_NO, APPLI_DATE, DEPARTMENT) 
values ('1002', 'a003', TO_DATE('2024-01-27', 'YYYY-MM-DD'),'開発');
insert into 申請管理情報 (STAFF_NO, APPLI_NO, APPLI_DATE, DEPARTMENT) 
values ('1003', 'A004', TO_DATE('2024-02-28', 'YYYY-MM-DD'),'営業');

申請年月日が特定の範囲内のデータを取得

select * 
from 申請管理情報 
where appli_date between to_date('2024-02-25', 'yyyy-mm-dd') 
                     and to_date('2024-02-27', 'yyyy-mm-dd');

BETWEEN を使うことで、2024-02-25 から 2024-02-27 までの日付を範囲指定できます。

TO_DATE('2024-02-25', 'YYYY-MM-DD') のように TO_DATE を使うことで、文字列を日付型に変換し、適切に比較できるようにしています。

BETWEEN は両端を含むため、2024-02-252024-02-27 の両方のデータも取得されます。

申請番号が特定の範囲のデータを取得

select * 
from 申請管理情報 
where appli_no between 'A001' and 'A003';

BETWEEN は文字列にも適用可能です。

文字列の比較はアルファベット順(辞書順)に評価されるため、A001 から A003 の範囲のデータが取得されます。

ただし、APPLI_NO に小文字の a003 が含まれていますが、Oracle では大文字・小文字を区別するため、A003 には含まれますが、a003 は取得されません。

職員番号が特定の範囲内のデータを取得

select * 
from 申請管理情報 
where staff_no between '1001' and '1002';

STAFF_NOVARCHAR2 型ですが、数値のように見えるため、BETWEEN を使うと数値の範囲として処理されます。

1001 から 1002 までの職員番号のデータが取得されます。

STAFF_NOVARCHAR2 型のため、データ型が NUMBER ではなく文字列として比較される点に注意が必要です。

まとめ

BETWEEN 演算子を使用すると、以下のような条件でデータを簡潔に抽出できます。

  1. 日付の範囲を指定する (APPLI_DATE)
  2. 文字列の範囲を指定する (APPLI_NO)
  3. 数値のような VARCHAR2 型のデータを範囲指定する (STAFF_NO)
  4. JOIN を使って複数のテーブルを結合し、特定の期間内の詳細情報を取得する
筆者
筆者

BETWEENについて解説しました。

BETWEEN範囲の両端を含む点が重要です。条件に含めたくない場合は >< を組み合わせると良いでしょう。

次回もお楽しみに!

この記事を書いた人
たくたく

文系出身・3年目のWeb系エンジニアです。
C#とSQLを得意としています。
同棲生活は2年目に入り、日々仲良く楽しく暮らしています。
プライベートではバイクや車で旅行に行くことが趣味です。
サンリオ好きで、中でもシナモン推しです。
お酒好きとして毎週の晩酌をリラックスタイムにしています。

たくたくをフォローする
SQLエンジニア
シェアする

コメント

タイトルとURLをコピーしました