PostgreSQL - LIKE句:初心者向けの親切なガイド
こんにちは、未来のデータベースの魔法使いさんたち!今日は、PostgreSQLの世界に足を踏み入れる興奮人心的な旅を一緒にします。特にLIKE句に焦点を当てます。新しいことを試しているあなたに不安はありません。私はあなたの親切なガイドとして、一歩一歩進んでいきます。このチュートリアルの最後には、LIKE句を使いこなすプロになっているでしょう!
LIKE句とは?
本題に入る前に、LIKE句とは何について知っておきましょう。巨大な図書館で本を探しているとしますが、タイトルの一部しか覚えていないです。似ているタイトルを検索できたら素晴らしいでしょう。これがPostgreSQLのLIKE句がやることです。特定のパターンに一致するデータを検索するのを助けます。
LIKE句はSQLのWHERE句で、特定のパターンに一致する列を検索するために使用されます。ワイルドカードを理解するスーパーチャージされた検索機能のようなものです。すごいですね?
LIKE句の構文
それでは、LIKE句の基本的な構文を見てみましょう:
SELECT column1, column2, ...
FROM table_name
WHERE columnN LIKE pattern;
心配しないでください!これを分解してみましょう:
-
SELECT column1, column2, ...
:これは、結果に表示したい列を指定する場所です。 -
FROM table_name
:これは、検索するテーブルです。 -
WHERE columnN LIKE pattern
:これは魔法が起こる場所です。columnN
に指定されたpattern
に一致するデータをPostgreSQLに探させる指示です。
LIKE句のワイルドカード文字
具体例に進む前に、LIKE句が強力な理由となる2つの特別な文字について話しましょう:
-
%
(パーセント記号):これは0文字、1文字、または複数の文字を表します。 -
_
(アンダースコア):これは1文字を表します。
これらはカードゲームのジョーカーのように、検索パターンの中で他の文字の代わりに立つことができます。
LIKE句の具体例
それでは、LIKE句が実際のシナリオでどのように動作するかをいくつかの例で見てみましょう。books
というテーブルがあり、book_id
、title
、author
という列があるとします。
例1: 'The'で始まるタイトルの検索
SELECT title
FROM books
WHERE title LIKE 'The%';
このクエリは、'The'で始まるすべての書籍タイトルを返します。'The'の後の%
は「任意の文字の数」を意味します。
これが返るかもしれません:
- The Great Gatsby
- The Catcher in the Rye
- The Hobbit
例2: 'son'を含む作者の検索
SELECT author
FROM books
WHERE author LIKE '%son%';
このクエリは、'son'が含まれている作者を探します。'son'の前後の%
は「任意の文字の数」を意味します。
これが返るかもしれません:
- Jodi Picoult
- Orson Scott Card
- Jason Reynolds
例3: 正確に5文字のタイトルの検索
SELECT title
FROM books
WHERE title LIKE '_____';
ここでは、5つのアンダースコアを使用して、正確に5文字のタイトルを探します。
これが返るかもしれません:
- Dunes
- Ender
- Holes
例4: 大文字小文字を区別しない検索
デフォルトでは、LIKE句は大文字小文字を区別します。しかし、大小文字を区別せずに'the'を探したい場合はどうでしょうか?PostgreSQLには解決策があります:
SELECT title
FROM books
WHERE LOWER(title) LIKE '%the%';
このクエリは、すべてのタイトルを小文字に変換してから検索するため、'The'、'THE'、'the'、以及其他の大小文字の組み合わせを見つけることができます。
高度なLIKE句の技術
基本的なことを理解したら、さらに高度な技術を見てみましょう。
NOT LIKEの使用
時々、パターンに一致しないすべてのものを見つけたいことがあります。その場合、NOT LIKEを使います:
SELECT title
FROM books
WHERE title NOT LIKE 'The%';
これは、'The'で始まらないすべてのタイトルを見つけます。
特殊文字のエスケープ
タイトルに実際に%
や_
が含まれている場合、どうでしょうか?エスケープ文字を使用して、これらをリテラル文字として処理します:
SELECT title
FROM books
WHERE title LIKE '50\% off%' ESCAPE '\';
これは、'50% off'で始まるタイトルを見つけ、%
をワイルドカードではなくリテラル文字として処理します。
LIKE句のメソッド
以下の表に、LIKE句で使用できるさまざまなメソッドをまとめます:
メソッド | 説明 | 例 |
---|---|---|
LIKE 'pattern' | 正確なパターンに一致 | WHERE title LIKE 'The Great Gatsby' |
LIKE '%pattern%' | パターンがどこにでも一致 | WHERE title LIKE '%Great%' |
LIKE 'pattern%' | パターンが先頭に一致 | WHERE title LIKE 'The%' |
LIKE '%pattern' | パターンが末尾に一致 | WHERE title LIKE '%Gatsby' |
LIKE 'pattern' | パターンに1文字のワイルドカードを使用 | WHERE title LIKE 'he' |
NOT LIKE 'pattern' | パターンに一致しないすべてのもの | WHERE title NOT LIKE 'The%' |
ILIKE 'pattern' | 大文字小文字を区別しないLIKE | WHERE title ILIKE 'the%' |
結論
そして、ここまでがPostgreSQLのLIKE句の素晴らしい世界への第一歩です。慣れるためには練習が大事です。さまざまなパターンや組み合わせを試してみてください。
LIKE句は、柔軟性と正確性を持ってデータを検索するための強力なツールです。書籍のタイトル、顧客の名前、または他のテキストベースのデータを探す際には、LIKE句があなたをサポートします。
探索を続け、クエリを続け、最も重要的是にデータベースを楽しみましょう!誰 knows? 次のデータベースのスーパーヒーローになるかもしれません。次回まで、ハッピーコーディング!
Credits: Image by storyset