サイトアイコン ITC Media

【SQLの基本】LIKEの使い方|場面別の活用例を元に徹底解説

(最終更新月:2023年5月)

✔このような方へ向けて書かれた記事となります

「SQLのLIKE演算子とは何で、どのように使うのだろうか?」

「SQLのLIKE演算子の使い方を学びたい」

「SQLのLIKE演算子の具体的な使用例を見て理解したい」

✔当記事を通じてお伝えすること

この記事では、SQLのLIKE演算子の基本的な使い方から、その応用法まで、具体的な例を交えて詳細に説明します。

ぜひ最後までお読みください。

筆者プロフィール

【現職】プロダクトマネージャー

【副業】ブログ(月間20万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。現在はプロダクトマネージャーとして、さまざまな関係者の間に入り奮闘してます。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

SQLのLIKE句とは

SQLのLIKE句について基本的な部分からご覧ください。

基礎を身につけたら応用へ進みましょう。

LIKE句とは?

SQLのLIKE句は、特定のパターンに一致するデータを検索する際に使用されます。

これは、文字列の検索条件を柔軟に設定するための機能で、ワイルドカードと呼ばれる特殊文字を使用して検索パターンを表現します。

たとえば、‘John%’というパターンは「Johnで始まる任意の文字列」を表します。

SELECT * FROM Customers WHERE Name LIKE 'John%';

LIKE句がどのような場合に使われるか

LIKE句は、特定のパターンを含むデータを検索する際によく使われます

例を挙げると以下のとおりです。

例: “@example.com”ドメインを持つ顧客を検索する(部分一致検索)

SELECT * FROM Customers WHERE Email LIKE '%@example.com';

LIKE句の基本的な使い方

LIKE句の基本的な使い方を見ていきましょう。

具体的に見ながら、手を動かして進めてください。

手を動かすときにはこちらのサイトがブラウザからSQLがいじれるのでおすすめです。

SQL Fiddle - Online SQL Compiler for learning & practice
Discover our free online SQL editor enhanced with AI to chat, explain, and generate code. Support SQL Server, MySQL, Mar...

前方一致検索

‘Apple%’のように、パーセント記号(%)を使って前方一致検索が可能です。

この例では、「Apple」で始まる全てのデータを検索します。

たとえば、製品名が’AppleiPhone’,’AppleiPad’などとなっているレコードを検索する際に用いられます。

SELECT * FROM テーブル名 WHERE 列名 LIKE 'Apple%'

後方一致検索

‘%Apple’のように、パーセント記号(%)を前につけて後方一致検索をおこなえます。

この例では、「Apple」で終わる全てのデータを検索します。

たとえば製品名が、以下のようなものです。

SELECT * FROM テーブル名 WHERE 列名 LIKE '%Apple'

部分一致検索

‘%Apple%’のように、パーセント記号(%)を両側につけて部分一致検索が可能です。

この例では、「Apple」を含む全てのデータを検索します。

たとえば製品名が以下のように、どこかに’Apple’を含むレコードを検索する際に用いられます。

SELECT * FROM テーブル名 WHERE 列名 LIKE '%Apple%'

4.完全一致検索

‘Apple’のように、パーセント記号(%)を使わずに完全一致検索をおこなえます。

この例では、「Apple」と完全に一致するデータのみを検索します。

たとえば、製品名がちょうど’Apple’であるレコードを探す場合などに使用します。

SELECT * FROM テーブル名 WHERE 列名 = 'Apple'

ワイルドカードとその使い方

ワイルドカードの使い方もみていきましょう。

ワイルドカードについて理解すれば、コーディングの幅が広がります。

ワイルドカードとは?

ワイルドカードは、LIKE句内で使用され、任意の文字列を表すための特殊文字です。

最もよく使われるワイルドカードは、パーセント記号(%)で、これは任意の文字数(ゼロを含む)の任意の文字を表します

また、アンダースコア(_)もワイルドカードとして使用され、これは任意の1文字を表します。

ワイルドカードを使った具体的な検索例

例えば「%pple」というパターンは、「pple」で終わる任意の文字列を表します。

これにより、’Apple’や’Mpple’などが検索可能です。

「Ap_le」というパターンにすると、’Ap’で始まり、任意の1文字を挟んで’le’で終わる文字列を表すので、’Apple’や’Apxle’などを検索できます。

実践的な例で学ぶLIKE句

LIKE句の実践例を見ていきましょう。

より具体的なものを見れば、使いどころが明確になります。

特定の文字列を含むレコードの検索例

例えば顧客の住所が特定の都市、例えば「東京」を含むかどうかを調べたい場合があります。

この場合、次のようなSQLクエリを使用します。

SELECT * FROM Customers WHERE Address LIKE '%東京%';

このクエリは、「東京」を住所に含むすべての顧客レコードを検索します。

特定のパターンに一致するレコードの検索例

特定のパターン、たとえば電話番号が特定のエリアコード(03)で始まる顧客を探す場合、次のようなSQLクエリを使用します。

SELECT * FROM Customers WHERE Phone LIKE '03%';

このクエリは、電話番号が’03’で始まるすべての顧客レコードを検索します。

NOT LIKEとその使い方

NOT LIKEを使う方法をご紹介します。

LIKEと使い分けられると、とても便利です。

NOT LIKEの基本的な説明

NOT LIKEは、LIKEの反対の動作をするSQLの句です。

特定のパターンに一致しないレコードを検索するときに使用します。

たとえば、’%Apple%’というパターンを使用した場合、’Apple’を含まない全てのデータを検索します。

SELECT * FROM Products WHERE Name NOT LIKE '%Apple%';

NOT LIKEを使った具体的な検索例

例えば、特定の都市、例えば「東京」を住所に含まない顧客を見つけたい場合があります。

その場合、次のようなSQLクエリを使用します。

SELECT * FROM Customers WHERE Address NOT LIKE '%東京%';

このクエリは、「東京」を住所に含まないすべての顧客レコードを検索します。

エスケープ文字とその利用

エスケープ文字についても見ていきましょう。

複雑な検索をおこなうときは、エスケープ文字が欠かせません。

エスケープ文字とは?

エスケープ文字は、ワイルドカード文字を文字列として検索する際に使用します。

なぜならエスケープ文字を使うと、ワイルドカード文字を文字列として扱えるからです。

たとえば「%25」という文字列を含むレコードを検索したい場合でも、「%25」をパターンとして使用すると、「25」の前方一致を意味してしまいます。

エスケープ文字を使えば、ワイルドーカードの特殊文字も、一般の文字と認識できるのです。

6.エスケープ文字を使った検索例

例えば、’%25’という文字列を含むレコードを検索する場合、エスケープ文字(ここでは’\’)を使って次のようにクエリを書きます。

SELECT * FROM Products WHERE Name LIKE '%\%25%' ESCAPE '\';

このクエリは、商品名に’%25’という文字列を含む全てのレコードを検索します。

大文字小文字の区別について

SQL言語における大文字小文字の区別について見ていきます。

明確にしておけば、今後のコーディング効率が上がるでしょう。

SQLの大文字小文字の扱いについて

SQLの大文字小文字の扱いは、使用しているDBMSによります

一部のDBMS(例えば、MySQL)ではデフォルトで大文字と小文字を区別しない(case-insensitive)です。

ただし他のDBMS(例えば、PostgreSQL)では大文字と小文字を区別します(case-sensitive)。

どちらの状況でも正しく動作するSQLを書くためには、大文字小文字の扱いを理解しておくことが重要です。

大文字小文字を区別しない検索の方法

大文字小文字を区別しない検索方法で安全なのは、検索条件と対象のカラムの両方を同じケース(大文字または小文字)に変換して比較すること。

たとえば、商品名が大文字小文字を問わず’apple’であるレコードを検索するには、次のようにクエリを書きます。

SELECT * FROM Products WHERE LOWER(Name) LIKE '%apple%';

このクエリでは、`LOWER()`関数を使用して商品名を全て小文字に変換し、それが’apple’を含むかどうかを検索しています。

正規表現を利用した検索

正規表現を使った検索方法も見ていきます。

少し応用した内容ですが、これまでの内容を理解しているなら、目を通しておきましょう。

正規表現とは何か

正規表現(RegularExpression)は、文字列のパターンを表現するための強力な言語です。

SQLのLIKE句はシンプルなパターンマッチングを提供しますが、正規表現を使うと、より複雑なパターンや繰り返しのパターンを表現できます。

例えば、電話番号やメールアドレスなど、特定の形式に一致する文字列を検索することが可能です。

正規表現を使った具体的な検索例

例えば電話番号が、特定の形式(例:(XXX)XXX-XXXX)に一致する顧客を探す場合、次のようなSQLクエリを使用します。

こちらはMySQLの正規表現を使用しています。

SELECT * FROM Customers WHERE Phone REGEXP '^\([0-9]{3}\)[0-9]{3}-[0-9]{4}$';

PostgreSQLでは以下のようになります。

SELECT * FROM Customers WHERE Phone ~ '^\([0-9]{3}\)[0-9]{3}-[0-9]{4}$';

このクエリは、電話番号が指定された正規表現のパターンに一致するすべての顧客レコードを検索します。

まとめ

当記事でご説明したこと。

これらの知識はデータベースから特定の条件に一致するデータを効率的に検索するために必要なものであり、日々のデータ分析や開発作業に大いに役立つことでしょう。

SQLは非常に広範で深い技術領域であり、LIKE句だけを学んだだけではまだまだその全貌を理解するのは難しいです。

今回学んだ知識をベースに、更に複雑なクエリの書き方やSQLの高度な機能を学んでいくことで、あなたのデータ操作のスキルは確実に向上していきます。

今後も一緒に学んでいきましょう。

モバイルバージョンを終了