PostgreSQLのLIKE検索(部分一致・前方一致)
生徒
「名前の一部だけ覚えている人を探したいときって、SQLではどうやって検索するんですか?」
先生
「そのときに使うのがLIKE検索です。文字の一部が合っていれば探せる便利な方法ですよ。」
生徒
「パソコンが苦手で、キーボードもあまり触ったことがないんですが大丈夫ですか?」
先生
「問題ありません。あいまいな文字探しをする感覚で、一つずつ説明します。」
1. SQLとは何か?
SQLは、データベースという「情報を表の形で整理して保存する場所」に命令を出すための言葉です。PostgreSQLは、そのSQLを使ってデータを管理できる代表的なデータベースです。
紙の名簿から特定の人を探すように、SQLを使うと大量のデータの中から必要な情報だけを取り出せます。
2. LIKE検索とは何か?
LIKE検索とは、「文字が完全に一致していなくても探せる検索方法」です。
たとえば、名簿で「山田」という文字が含まれている人を探すとき、フルネームが分からなくても見つけたいですよね。そのようなときにLIKE検索を使います。
PostgreSQLでは、WHERE句とLIKEを組み合わせて文字の条件検索を行います。
3. 今回使うテーブルを確認しよう
以下のusersテーブルを使って、LIKE検索の動きを見ていきます。
id | name | age | email
---+------------+-----+-------------------
1 | 山田太郎 | 25 | taro@example.com
2 | 山田花子 | 22 | hanako@example.com
3 | 佐藤次郎 | 19 | jiro@example.com
4 | 鈴木一郎 | 30 | ichiro@example.com
5 | 高橋太一 | 28 | taichi@example.com
4. 部分一致検索の基本
部分一致とは、「文字列のどこかに指定した文字が含まれている」状態のことです。
LIKE検索では、パーセント記号(%)を使います。この記号は「どんな文字が何文字あってもよい」という意味です。
SELECT *
FROM users
WHERE name LIKE '%山田%';
このSQLは、名前の中に「山田」という文字が含まれている人を探します。
id | name | age | email
---+----------+-----+-------------------
1 | 山田太郎 | 25 | taro@example.com
2 | 山田花子 | 22 | hanako@example.com
5. 前方一致検索の考え方
前方一致とは、「文字の先頭が指定した文字で始まっている」状態です。
電話帳で、最初の文字が同じ名字の人をまとめて探すイメージです。
SELECT name, email
FROM users
WHERE name LIKE '山田%';
このSQLは、「山田」で始まる名前だけを表示します。
name | email
---------+-------------------
山田太郎 | taro@example.com
山田花子 | hanako@example.com
6. % 記号の意味を理解しよう
%はワイルドカードと呼ばれ、「あいまいな部分」を表します。
前に付けると後ろは何でもよく、後ろに付けると前が何でもよくなります。
この考え方を理解すると、LIKE検索がとても使いやすくなります。
7. LIKE検索を使う場面
LIKE検索は、名前、メールアドレス、商品名など、文字を含む情報を探すときによく使われます。
すべてを正確に覚えていなくても検索できるため、初心者にとっても扱いやすい方法です。
8. 条件検索としてのLIKEの役割
PostgreSQLのLIKE検索は、条件検索の中でも特に使用頻度が高い機能です。
WHERE句と組み合わせることで、必要なデータだけを効率よく取り出せます。
まずは部分一致と前方一致を、名簿探しの感覚で覚えていきましょう。