ふりかえり

本記事は、SQLの基本、実務使用例編になります。
SQLの基礎に関しましては、
【初学者必見!】SQLの超基礎編の記事をご覧くださいませ。

本編に入ります!
BETWEENの基本構文

まずは、基本構文から見ていきましょう!
カラム名 BETWEEN 最小値 AND 最大値

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

はい、そうです!
「ある値が範囲の中にあるかどうか」を調べたいときに使うのが BETWEEN 演算子 です。
この構文は、「カラムの値が、最小値から最大値までの間にあるかどうか」をチェックします。
そして、最小値・最大値の両方を含みます(境界も含まれる)。
BETWEEN は「〜の間にある」を調べたいときに使う | 値が範囲の中にあるかチェック |
| 範囲の 最小値と最大値の両方を含む | 境界の値も含まれる(=以上、=以下) |
| 数値・日付・文字列に使える | いろんなデータ型に対応しています |
| 書き方がシンプルで見やすい | >= と <= を両方書かなくてよい |
実務レベルの使用例を見ていこう!

実際に、SQLを使用してデータを確認していきましょう。
SQLに関しては以下を使用して解説していきます。
create table文、select文、insert文、update文、delete文、
drop table文、につきましては、過去にアップロードした
【初学者必見!】SQLの超基礎編の記事をご覧くださいませ。

目次の、「ふりかえり」のところにそれぞれの記事のリンクが
貼ってあるよ!
または、サイドバーのカテゴリーに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-25 と 2024-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_NO は VARCHAR2 型ですが、数値のように見えるため、BETWEEN を使うと数値の範囲として処理されます。
1001 から 1002 までの職員番号のデータが取得されます。
STAFF_NO は VARCHAR2 型のため、データ型が NUMBER ではなく文字列として比較される点に注意が必要です。
まとめ
BETWEEN 演算子を使用すると、以下のような条件でデータを簡潔に抽出できます。
- 日付の範囲を指定する (
APPLI_DATE) - 文字列の範囲を指定する (
APPLI_NO) - 数値のような
VARCHAR2型のデータを範囲指定する (STAFF_NO) - JOIN を使って複数のテーブルを結合し、特定の期間内の詳細情報を取得する

BETWEENについて解説しました。
BETWEEN は範囲の両端を含む点が重要です。条件に含めたくない場合は > や < を組み合わせると良いでしょう。
次回もお楽しみに!










コメント