記事内に広告が含まれています。

【Oracle】SELECT文で検索条件を指定する

OracleのSELECT文で検索条件を指定する方法です。

【スポンサーリンク】

SELECT文で検索条件を指定する

SELECT文でデータを取得する際に、「カラムAという値がxxxという行だけ取得したい」という場合があると思います。その際に使用するのがWHERE句です。基本的な構文は以下です。

SELECT
 列名のリスト
FROM
 テーブル名
WHERE
 条件式;

具体的には以下の様に記述します。

SELECT
  列1
 ,列2
 ,列3
 …
FROM
 テーブル名;
WHERE 列1 = 'aaa'
…
;

上記のように記述することで、「列1」の値が「aaa」のものを取得するという条件を指定して検索できます。

【スポンサーリンク】

複数の検索条件を指定したい場合

条件は1つだけでなく、複数指定することが可能です。複数の検索条件を指定する場合は、2つめ以降の条件を AND もしくは OR で指定します。

--AND条件
SELECT
  列1
 ,列2
 ,列3
 …
FROM
 テーブル名;
WHERE 列1 = 'aaa'
AND 列2 = 111
…
;


--OR条件
SELECT
  列1
 ,列2
 ,列3
 …
FROM
 テーブル名;
WHERE 列1 = 'aaa'
OR 列2 = 111
…
;

AND条件とOR条件の違いは以下です。

  • AND条件:全ての条件式を満たす
  • OR条件:いずれかの条件式を満たす

なので、ANDの場合は、「列1の値が aaa」かつ「列2の値が111」の行を取得し、ORの場合は、「列1の値が aaa」もしくは「列2の値が111」の行を取得します。ORの場合は同じカラムに対して複数の条件の指定も可能です。例えば、こんな感じですね。

--OR条件
SELECT
  列1
 ,列2
 ,列3
 …
FROM
 テーブル名;
WHERE 列1 = 'aaa'
OR 列1 = 'bbb'
…
;

上記のSQLは「列1の値がaaa」もしくは「列1の値がbbb」を満たす行を取得する条件です。これはOR条件のみ可能で、AND条件の場合は、同じ列に複数の条件を指定することは出来ません。

【スポンサーリンク】

使用例

では、実際に使用してみましょう。SQL確認用のテーブルを用意しました。山手線の駅番号(STATION_NO)、駅名称(STATION_NAME)、駅名カナ(STATION_KANA)、駅住所(ADDRESS)の情報を持つテーブル(山手線テーブル)です。

f:id:neko_britannia:20200724175007j:plain

このテーブルに対して検索条件を指定してSELECTを実行してみます。

例1:検索条件が1つ

山手線テーブルから住所が「千代田区」の駅名を検索してみます。SQLは以下。

SELECT
 STATION_NAME
FROM
 TAB_YAMANOTE_STATION
WHERE ADDRESS = '千代田区';

これを実行してみましょう。結果は以下です。

f:id:neko_britannia:20200724175307j:plain

4行が取得できましたね。山手線の駅は30駅存在し、そのうち、千代田区に位置する駅は4駅存在するのでOKです。

例2:検索条件が複数(AND)

複数の条件で検索してみます。AND条件を使用します。住所が「台東区」で、かつ駅番号が「JY04」の駅名を取得します。

SELECT
 STATION_NAME
FROM
 TAB_YAMANOTE_STATION
WHERE ADDRESS = '台東区'
AND STATION_NO = 'JY04';

これも実行してみます。結果はこちら。

f:id:neko_britannia:20200724175755j:plain

取得できましたね。ただ、厳密に言えば、「STATION_NO」が「JY04」のレコードは1行しかないので、必ず1行が返ってきます。

例3:検索条件が複数(OR、別カラム)

今度は複数条件のORを使用します。住所が「豊島区」、もしくは駅番号が「JY01」の行を取得します。

SELECT
 STATION_NAME
FROM
 TAB_YAMANOTE_STATION
WHERE ADDRESS = '豊島区'
OR STATION_NO = 'JY01';

では実行してみましょう。

f:id:neko_britannia:20200724180214j:plain

豊島区に位置する駅は5駅、そして駅番号「JY01」は東京駅なので、合計5行が取得できました。

例4:検索条件が複数(OR、同カラム)

最後に、同カラムでOR条件を使用してみます。住所が「渋谷区」もしくは「港区」の駅名を取得してみます。

SELECT
 STATION_NAME
FROM
 TAB_YAMANOTE_STATION
WHERE ADDRESS = '渋谷区'
OR ADDRESS = '港区';

ではこれも実行します。

f:id:neko_britannia:20200724180457j:plain

渋谷区に位置する山手線の駅は4駅、港区に位置する山手線の駅は5駅なので合計9駅が取得できました。

【スポンサーリンク】

編集後記

WHERE条件は必須中の必須なので、まずは基本形を押さえておきましょう。同カラムに対してAND条件は使用出来ないので注意して下さい。

【スポンサーリンク】

関連記事

【Oracle】SELECT文の基本
OracleにおけるSELECT文の基本的な使い方です。
【DB基礎】DML(データ操作言語)とは?
データベースを扱うにはSQLが必要です。SQLはデータベースに対して命令を行い、データベースを操作・定義・制御を行います。一般的には大きく3つに分類されます。 データ操作言語(DML…Data Manipulation Language)←...

.