Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

SQLの含む条件指定についてまとめています。

SQLの「含む」条件はLIKEとワイルドカードで部分一致指定

LIKEはワイルドカード指定であいまい検索をおこなう条件指定です。

以下は、first_name(姓名の名)に「em」を含むものを取得するSQLです。※MySQL で実行しています。

SELECT *  FROM employees
WHERE first_name like '%em%'
limit 10;
+--------+------------+-------------+-------------+--------+------------+
| emp_no | birth_date | first_name  | last_name   | gender | hire_date  |
+--------+------------+-------------+-------------+--------+------------+
|  10080 | 1957-12-03 | Premal      | Baek        | M      | 1985-11-19 |
|  10097 | 1952-02-27 | Remzi       | Waschkowski | M      | 1990-09-15 |
|  10103 | 1953-11-26 | Akemi       | Birch       | M      | 1986-12-02 |
|  10145 | 1956-03-30 | Akemi       | Esposito    | F      | 1987-08-01 |
|  10195 | 1963-11-13 | Annemarie   | Redmiles    | M      | 1985-02-15 |
|  10240 | 1952-04-01 | Remko       | Maccarone   | M      | 1998-10-06 |
|  10246 | 1962-06-23 | Basem       | Teitelbaum  | M      | 1987-07-12 |
|  10329 | 1958-04-28 | Remko       | Shigei      | F      | 1986-01-20 |
|  10473 | 1963-10-13 | Przemyslawa | Oskamp      | M      | 1987-10-30 |
|  10538 | 1955-08-18 | Przemyslawa | Falby       | M      | 1987-07-23 |
+--------+------------+-------------+-------------+--------+------------+
10 rows in set (0.00 sec)

【関連記事】
SQLの部分一致にはlikeとワイルドカードを指定 中間一致指定も可能 

「特定の月を含む」日付を検索

like指定は、日付型、時刻型のカラムにも適用可能です。※MySQLの場合

以下は、hire_date(雇用年月日)に、4月を含むデータを取得するSQLです。条件指定でlikeで「-04-」を含む指定をおこなっています。

SELECT *  FROM employees
WHERE hire_date like '%-04-%'
limit 10;
+--------+------------+------------+--------------+--------+------------+
| emp_no | birth_date | first_name | last_name    | gender | hire_date  |
+--------+------------+------------+--------------+--------+------------+
|  10018 | 1954-06-19 | Kazuhide   | Peha         | F      | 1987-04-03 |
|  10019 | 1953-01-23 | Lillian    | Haddadi      | M      | 1999-04-30 |
|  10055 | 1956-06-06 | Georgy     | Dredge       | M      | 1992-04-27 |
|  10058 | 1954-10-01 | Berhard    | McFarlin     | M      | 1987-04-13 |
|  10063 | 1952-08-06 | Gino       | Leonhardt    | F      | 1989-04-08 |
|  10085 | 1962-11-07 | Kenroku    | Malabarba    | M      | 1994-04-09 |
|  10094 | 1957-05-25 | Arumugam   | Ossenbruggen | F      | 1987-04-18 |
|  10104 | 1961-11-19 | Xinyu      | Warwick      | M      | 1987-04-16 |
|  10151 | 1959-03-06 | Itzchak    | Lichtner     | M      | 1990-04-10 |
|  10153 | 1955-12-15 | Heekeun    | Majewski     | M      | 1987-04-08 |
+--------+------------+------------+--------------+--------+------------+
10 rows in set (0.00 sec)

【関連記事】
MySQL likeのサンプルコード集 複数のパターンマッチングをするには?

ただし、この方法はSQL標準の記述ではありません。データベースによっては、カラムをいったん文字列型に変換してからlikeで条件指定をおこなう必要があります。

複数の「含む」条件を指定するには、andで接続する

複数の含む指定を行うには、likeによるあいまい検索指定をandで接続します。

以下の例は、hire_date(雇用年月日)に「4月」を含み、first_name(姓名の名)に「in」を含むデータを抽出するSQLです。

SELECT *  FROM employees
WHERE hire_date like '%-04-%' 
and first_name like '%in%'
limit 10;
+--------+------------+------------+-------------+--------+------------+
| emp_no | birth_date | first_name | last_name   | gender | hire_date  |
+--------+------------+------------+-------------+--------+------------+
|  10063 | 1952-08-06 | Gino       | Leonhardt   | F      | 1989-04-08 |
|  10104 | 1961-11-19 | Xinyu      | Warwick     | M      | 1987-04-16 |
|  10245 | 1962-08-23 | Ramalingam | Gente       | F      | 1985-04-26 |
|  10437 | 1956-07-07 | Narain     | Reeker      | F      | 1996-04-12 |
|  10850 | 1963-01-01 | Florina    | Schapire    | F      | 1990-04-22 |
|  10902 | 1964-05-09 | Inderjeet  | Perly       | M      | 1990-04-22 |
|  10919 | 1961-09-04 | Reinhard   | Lindenbaum  | M      | 1987-04-19 |
|  11242 | 1958-12-27 | Jinya      | Camurati    | F      | 1989-04-30 |
|  11266 | 1955-08-09 | Florina    | Rohrbach    | M      | 1995-04-04 |
|  11305 | 1960-12-22 | Augustine  | Schwabacher | F      | 1986-04-11 |
+--------+------------+------------+-------------+--------+------------+
10 rows in set (0.00 sec)

【関連記事】
SQLのワイルドカードは、like句にマッチング文字列を指定 

まとめ

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。