「絞り込み」ってどうやるの?WHERE句の比較演算子とLIKE(あいまい検索)を使ってみた

データベース/SQL

前回の記事では、データベースからデータを取り出す「SELECT文」の基本をお伝えしました。今回はその続き——条件を使ってもっと細かく絞り込む方法を解説します!


前回のおさらい

前回はWHERE句の基本として「category = 'コーヒー'」のように、ぴったり一致するものを取り出す方法をご紹介しました。

でも実際の仕事では「500円以下のメニューだけ知りたい」「名前に”ラテ”が含まれるものを探したい」といった場面も多いですよね。そこで活躍するのが比較演算子LIKE述語です。


比較演算子とは?

比較演算子とは、条件を比べるための記号のことです。Excelのフィルター機能で「以上」「未満」を選ぶのと同じ感覚です。

演算子意味使用例
=~と等しいprice = 500
<>~と等しくないcategory <> 'コーヒー'
>~より大きいprice > 400
>=~以上price >= 500
<~より小さいprice < 500
<=~以下price <= 450

実際に使ってみよう

前回と同じカフェのメニュー表を使います。

menu_idmenu_namecategoryprice
001アメリカーノコーヒー350
002カフェラテコーヒー450
003抹茶ラテティー500
004チョコケーキスイーツ600
005チーズケーキスイーツ550

「500円以下のメニューだけ取り出したい」

sql

SELECT * FROM cafe_menu WHERE price <= 500;

結果はアメリカーノ(350円)、カフェラテ(450円)、抹茶ラテ(500円)の3件です。

「コーヒー以外のメニューを見たい」

sql

SELECT * FROM cafe_menu WHERE category <> 'コーヒー';

<>は「等しくない」という意味です。コーヒー以外の、ティーとスイーツが返ってきます。


LIKE述語——あいまい検索ができる!

「名前に”ラテ”という文字が含まれるものを探したい」というとき、完全一致の=では対応できません。そこで使うのがLIKE述語です。

LIKE述語では、%(パーセント)という特別な記号を使います。

書き方意味
'ラテ%'「ラテ」で始まるもの
'%ラテ'「ラテ」で終わるもの
'%ラテ%'「ラテ」を含むもの(前後どこでもOK)

「名前に”ラテ”を含むメニューを取り出したい」

sql

SELECT * FROM cafe_menu WHERE menu_name LIKE '%ラテ%';

結果はカフェラテと抹茶ラテの2件です。「カフェラテ」も「抹茶ラテ」も、どちらも”ラテ”という文字を含んでいるので引っかかります。

Excelで言うと、検索窓に「ラテ」と入力して部分一致で検索するのと同じイメージです。

「名前が”ケーキ”で終わるメニューを取り出したい」

sql

SELECT * FROM cafe_menu WHERE menu_name LIKE '%ケーキ';

結果はチョコケーキとチーズケーキです。末尾が「ケーキ」で終わるものだけが返ってきます。


AND・ORで条件を組み合わせる

「コーヒーカテゴリで、かつ400円以上のもの」のように、複数の条件を同時に使うこともできます。

sql

SELECT * FROM cafe_menu WHERE category = 'コーヒー' AND price >= 400;

「AND」は「かつ」、「OR」は「または」という意味です。

書き方意味結果のイメージ
条件A AND 条件BAかつB(両方満たす)範囲が狭まる
条件A OR 条件BAまたはB(どちらか満たす)範囲が広がる

まとめ

今回のポイントをまとめます。

やりたいこと書き方の例
500円以下のデータを取り出すWHERE price <= 500
コーヒー以外を取り出すWHERE category <> 'コーヒー'
“ラテ”を含む名前を取り出すWHERE menu_name LIKE '%ラテ%'
複数条件を同時に使うWHERE ... AND ...

比較演算子とLIKEを使いこなせると、データの絞り込みがグッと自由になります。「そういえばExcelでもこういう絞り込みやってた!」という感覚で覚えると、スムーズに身につきますよ。

次回は、SQLで使える文字列関数・日付関数・変換関数をExcelの関数と比較しながら解説します。「ExcelのLEFT関数ってSQLにもあるの?」という疑問にもお答えします!


職業訓練校でJava・データベースを学んだ40代3児の母がITエンジニアを目指して日々奮闘中。同じように学習中の方と一緒に成長していけたら嬉しいです!

コメント

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