MySQLのLIKEとワイルドカード(%・_)の使い方を完全解説!WHERE句で文字列検索する方法【初心者向けSQL入門】
生徒
「MySQLのWHERE句で名前を検索したいんですが、LIKEって何ですか?」
先生
「LIKEは、文字の一部が一致するデータを探すための命令です。あいまい検索とも呼ばれます。」
生徒
「あいまい検索って難しそうです…。」
先生
「大丈夫です。紙の名簿から『山』がつく人を探すようなイメージで考えれば簡単ですよ。」
1. LIKEとは何か?MySQLの文字列検索の基本
MySQLのLIKEは、WHERE句と一緒に使うことで、文字の一部が一致するデータを検索できる機能です。 通常のイコール検索は完全一致ですが、LIKEを使うと部分一致検索が可能になります。 これはデータベース検索の基本であり、SQL初心者が必ず覚える重要なポイントです。 例えば、会員名簿の中から「山」という文字が含まれている人を探したい場合に使います。 このような検索を部分一致検索と呼びます。
2. ワイルドカードとは?%と_の意味を理解しよう
ワイルドカードとは、どんな文字でもよいという意味を持つ特別な記号です。 MySQLでは主にパーセントとアンダースコアの二つを使います。 パーセントは文字数がいくつでもよいという意味です。 アンダースコアは一文字だけなら何でもよいという意味です。 つまりパーセントは自由度が高く、アンダースコアは文字数を固定した検索ができます。 この違いを理解することが、LIKEとワイルドカードの使い分けの基本になります。
3. %を使った部分一致検索の例
まずはパーセントを使った検索例を見てみましょう。 以下はusersテーブルのデータです。
id | name | age | email
---+------------+-----+-------------------
1 | 山田太郎 | 25 | taro@example.com
2 | 佐藤花子 | 19 | hanako@example.com
3 | 鈴木一郎 | 30 | ichiro@example.com
4 | 山本美咲 | 22 | misaki@example.com
5 | 田中健 | 28 | ken@example.com
名前に「山」が含まれる人を検索します。
SELECT *
FROM users
WHERE name LIKE '%山%';
実行結果です。
id | name | age | email
---+------------+-----+-------------------
1 | 山田太郎 | 25 | taro@example.com
4 | 山本美咲 | 22 | misaki@example.com
パーセントで囲むことで、前後にどんな文字があってもよいという意味になります。 これがMySQLの部分一致検索の基本です。
4. 先頭一致・後方一致の検索方法
LIKEとワイルドカードは位置によって意味が変わります。 例えば「山」で始まる名前だけを探したい場合は次のように書きます。
SELECT *
FROM users
WHERE name LIKE '山%';
逆に「郎」で終わる名前を検索する場合です。
SELECT *
FROM users
WHERE name LIKE '%郎';
このように前に付けるか後ろに付けるかで検索条件が変わります。 これを先頭一致検索や後方一致検索と呼びます。
5. _を使った一文字指定の検索
アンダースコアは一文字だけ自由に指定できます。 例えば三文字の名前だけを検索する場合は次のように書きます。
SELECT *
FROM users
WHERE name LIKE '___';
実行結果です。
id | name | age | email
---+------------+-----+-------------------
5 | 田中健 | 28 | ken@example.com
アンダースコアが三つあるので三文字の名前だけが対象になります。 このように文字数を指定できるのが特徴です。
6. %と_の使い分けのポイント
パーセントは文字数が決まっていない場合に使います。 例えばメールアドレスの一部が分かっている場合などです。 アンダースコアは文字数が決まっている場合に使います。 例えば社員番号が五桁で三桁目だけ分からない場合などです。 このように目的によって使い分けることが大切です。 MySQLのLIKEとワイルドカードの違いを理解することで、効率的なデータ検索が可能になります。
7. LIKE検索でよくある間違いと注意点
LIKEは文字列に対して使う条件式です。 数値に使うときは注意が必要です。 またパーセントを付けすぎると検索範囲が広くなり、処理が遅くなることもあります。 データベース検索では必要な条件だけを指定することが重要です。 WHERE句の条件があいまいすぎると、思わぬ結果になることがあります。 そのため検索条件は具体的に書くようにしましょう。
まとめ
今回はMySQLのLIKEとワイルドカードであるパーセントとアンダースコアの使い方について、WHERE句を使った文字列検索の基本から応用までを丁寧に確認しました。LIKEはデータベース検索における部分一致検索を実現するための重要なSQL構文であり、SQL初心者が必ず身につけておきたい基礎知識です。完全一致検索とは異なり、文字の一部が一致していれば抽出できるため、実務での会員検索や商品検索、メールアドレス検索など幅広い場面で活用されます。
パーセントは文字数がいくつでもよいという意味を持ち、前方一致検索、後方一致検索、部分一致検索など柔軟な検索条件を実現できます。一方でアンダースコアは一文字だけ任意の文字を表すため、文字数を固定した検索や桁数指定検索に役立ちます。この二つのワイルドカードの違いを理解することが、MySQLのLIKE検索を正しく使いこなす第一歩です。
例えば名前に特定の文字が含まれているユーザーを検索する場合、パーセントで前後を囲むことで部分一致検索が可能になります。逆に三文字だけの名前を抽出したい場合はアンダースコアを三つ並べることで、文字数を限定した検索ができます。このように検索条件の設計次第で、取得できるレコードは大きく変わります。
ここで改めて、LIKEとワイルドカードを組み合わせた検索の流れを整理してみましょう。まずテーブルの現在のデータを確認します。
id | name | age | email
---+------------+-----+-------------------
1 | 山田太郎 | 25 | taro@example.com
2 | 佐藤花子 | 19 | hanako@example.com
3 | 鈴木一郎 | 30 | ichiro@example.com
4 | 山本美咲 | 22 | misaki@example.com
5 | 田中健 | 28 | ken@example.com
6 | 山口翔 | 21 | sho@example.com
ここで名前が山で始まるユーザーを検索します。これは前方一致検索の基本例です。
SELECT *
FROM users
WHERE name LIKE '山%';
実行結果は次の通りです。
id | name | age | email
---+------------+-----+-------------------
1 | 山田太郎 | 25 | taro@example.com
4 | 山本美咲 | 22 | misaki@example.com
6 | 山口翔 | 21 | sho@example.com
このようにLIKEとパーセントを使うことで、データベースの中から条件に合うレコードだけを効率よく抽出できます。WHERE句の条件設計は、SQLの検索精度を大きく左右します。あいまい検索は便利ですが、必要以上に広い条件を設定すると不要なデータまで取得してしまいます。そのため、業務システムやWebアプリケーション開発では、検索対象を明確にしながら条件を組み立てることが大切です。
また、LIKE検索は文字列型のカラムに対して使用するのが基本です。数値型に対して無理に使用すると、意図しない型変換が起きることもあります。SQL初心者のうちは、文字列検索に集中して使い方を体で覚えることをおすすめします。実際に何度もSELECT文を書き、WHERE句の条件を変えて結果の違いを確認することで理解が深まります。
MySQLのLIKEとワイルドカードの理解は、データベース入門の重要なステップです。部分一致検索、前方一致検索、後方一致検索、文字数指定検索を自由に書けるようになれば、SQLの応用力が一気に高まります。日々の練習として、名前検索、メールアドレス検索、商品名検索などさまざまなパターンを試し、検索結果の変化を確認してみましょう。
生徒
LIKEとワイルドカードの違いがやっと分かりました。パーセントは何文字でもよくて、アンダースコアは一文字だけなんですね。
先生
その通りです。MySQLのWHERE句で文字列検索をするときは、まず完全一致か部分一致かを考えることが大切です。部分一致ならLIKEを使います。
生徒
前方一致検索や後方一致検索も、パーセントの位置を変えるだけで書けるのが便利ですね。データベース検索が少し身近に感じました。
先生
実務では会員管理システムや商品管理システムなどで頻繁に使われます。SQL初心者のうちにLIKE検索をしっかり理解しておくと、応用が効きますよ。
生徒
これからはSELECT文を書くときに、WHERE句の条件を意識して練習します。MySQLの文字列検索をもっと使いこなせるようになりたいです。
先生
その姿勢が大切です。SQL入門の基礎を一つ一つ確実に積み重ねていけば、データベース操作は必ず上達します。LIKEとワイルドカードは何度も書いて覚えましょう。