ふりかえり

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

本編に入ります!
in関数の基本構文

まずは、基本構文から見ていきましょう!
SELECT 列名
FROM テーブル名
WHERE 列名 IN (値1, 値2, 値3, ...);

select,from,where,inね!

はい、そうです!
IN は、SQLのWHERE句で 「複数の値の中にあるかどうか」 を判定するために使われる演算子です。これにより、特定の値のリストと比較し、一致するデータを取得できます。
列名:検索するカラム(例: STAFF_NO, APPLI_NO など)
テーブル名:対象のテーブル(例: 申請管理情報)(値1, 値2, 値3, ...):検索対象の値をカンマ , で区切って指定
実務レベルの使用例を見ていこう!

実際に、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)
APPROVAL_DATE date, -- 承認日 (Approval Date)
SEND_BACK_DATE date, -- 差戻年月日 (Send Back Date)
APPLICATION_CONTENT varchar2(50), -- 申請内容 (Application Content)
constraint PK_申請管理情報 primary key (STAFF_NO, APPLI_NO)
);
insert into 申請管理情報 (STAFF_NO, APPLI_NO, APPLI_DATE)
values ('1001', 'A001', TO_DATE('2024-02-25', 'YYYY-MM-DD'));
insert into 申請管理情報 (STAFF_NO, APPLI_NO, APPLI_DATE)
values ('1001', 'A002', TO_DATE('2024-02-26', 'YYYY-MM-DD'));
insert into 申請管理情報 (STAFF_NO, APPLI_NO, APPLI_DATE)
values ('1001', 'A003', TO_DATE('2024-02-27', 'YYYY-MM-DD'));
insert into 申請管理情報 (STAFF_NO, APPLI_NO, APPLI_DATE)
values ('1001', 'a003', TO_DATE('2024-01-27', 'YYYY-MM-DD'));
insert into 申請管理情報 (STAFF_NO, APPLI_NO, APPLI_DATE)
values ('1001', 'A004', TO_DATE('2024-02-28', 'YYYY-MM-DD'));
IN を使って特定の申請情報を取得する
select *
from 申請管理情報
where APPLI_NO in ('A001', 'A003');

where APPLI_NO in ('A001', 'A003') は、APPLI_NO が 'A001' または 'A003' のいずれかに一致する場合にデータを取得します。
NOT IN を使って、特定のデータを除外する
select *
from 申請管理情報
where APPLI_NO not in ('A001', 'A002');

not in ('A001', 'A002') によって、A001 と A002 を除外したデータが取得できます。
IN を使った大文字・小文字の注意点
select *
from 申請管理情報
where APPLI_NO in ('A003');

APPLI_NO のデータには A003 と a003 という2つの異なる値が含まれています。しかし、Oracle のデフォルト設定では VARCHAR2 型の比較は 大文字・小文字を区別 します。
select *
from 申請管理情報
where upper(APPLI_NO) in ('A003');

まとめ
IN を使うと、複数の条件を簡潔に指定できる。
NOT IN を使えば、特定の値を除外できる。
IN はサブクエリと組み合わせると強力な検索ができる。
VARCHAR2 型のデータはデフォルトで大文字・小文字を区別するので注意が必要。

in関数について解説しました。
IN を使うことで、可読性の高いSQLを効率よく書くことができます!
次回もお楽しみに!










コメント