PostgreSQLのILIKE完全ガイド|大文字小文字を無視したSQL検索を初心者向けに解説
生徒
「名前で検索したいんですけど、大文字と小文字が違うと見つからないことがあって困っています」
先生
「それはLIKEを使っているとよく起こります。PostgreSQLには、大文字と小文字を区別しないILIKEという便利な書き方がありますよ」
生徒
「英語が苦手なんですが、ILIKEって何をしているんですか?」
先生
「簡単に言うと、文字の見た目の違いを気にせずに探してくれる命令です。アルファベットの大文字と小文字を同じものとして扱ってくれます」
生徒
「パソコン初心者でも使えますか?」
先生
「もちろんです。表を見ながら順番に説明します」
1. SQLとPostgreSQLの基本をおさらい
PostgreSQLは、たくさんのデータを表の形で保存できるデータベースです。表は、行と列でできていて、紙の名簿や住所録と同じような見た目です。
SQLは、その表の中からデータを探したり、条件を指定して表示したりするための言葉です。検索するときによく使うのがWHERE句で、「この条件に合う行だけ出してください」という意味になります。
2. 条件検索とWHERE句の役割
条件検索とは、表のすべてを見るのではなく、必要な行だけを絞り込んで表示することです。WHERE句を使うと、「年齢が二十歳以上」「名前が特定の文字を含む」といった指定ができます。
文字を条件にするときによく使われるのがLIKEです。ただし、LIKEは大文字と小文字を区別するという特徴があります。
3. 検索に使うサンプルテーブルを確認しよう
まずは、usersテーブルの中身を見てみましょう。
id | name | age | email
---+--------------+-----+-----------------------
1 | TaroYamada | 25 | taro@example.com
2 | hanakoSato | 19 | hanako@example.com
3 | ICHIROSUZUKI | 30 | ichiro@example.com
4 | jiroTanaka | 22 | jiro@example.com
5 | MisakiYamamoto | 19 | misaki@example.com
このように、名前のアルファベットは大文字と小文字が混ざっています。ここが検索でつまずきやすいポイントです。
4. LIKE検索で起こる大文字小文字の問題
まずはLIKEを使った検索を見てみます。
SELECT *
FROM users
WHERE name LIKE '%taro%';
(検索結果なし)
このように、taroと小文字で書くと、TaroYamadaは見つかりません。LIKEは文字の形まで厳密にチェックしているためです。
5. ILIKEで大文字小文字を無視する検索
ここで登場するのがILIKEです。ILIKEは、PostgreSQL独自の書き方で、大文字と小文字を同じものとして扱います。
SELECT *
FROM users
WHERE name ILIKE '%taro%';
id | name | age | email
---+------------+-----+-----------------------
1 | TaroYamada | 25 | taro@example.com
小文字で書いても、大文字が含まれていても、正しく検索できます。人が目で見て判断する感覚に近い検索です。
6. ILIKEとワイルドカードの組み合わせ
パーセント記号は「どんな文字でもよい」という意味を持ちます。前後に付けることで、部分一致検索ができます。
SELECT name
FROM users
WHERE name ILIKE '%suzuki%';
name
-------------
ICHIROSUZUKI
大文字だけで登録されている名前でも、小文字で問題なく検索できています。
7. ILIKEとWHERE句を組み合わせた実用例
ILIKEは、ほかの条件と一緒に使うこともできます。例えば、年齢が二十歳以上で、名前に特定の文字が含まれる人を探す場合です。
SELECT *
FROM users
WHERE age >= 20
AND name ILIKE '%ta%';
id | name | age | email
---+------------+-----+-----------------------
1 | TaroYamada | 25 | taro@example.com
4 | jiroTanaka | 22 | jiro@example.com
条件を組み合わせることで、より現実的な検索ができるようになります。
8. ILIKEを使うときの注意点
ILIKEはとても便利ですが、PostgreSQL専用の書き方です。他のデータベースでは使えないことがあります。
また、大文字小文字を無視する分、データが多いと検索に時間がかかることもあります。初心者のうちは、動きを理解することを優先して使ってみるのがおすすめです。