SQL LIKE演算子の使い方を徹底解説!ワイルドカードでパターン検索する方法
SQLのLIKE演算子は、ワイルドカードを使用して特定のパターンに一致するデータを検索するための機能です。アンダースコア(_)で任意の1文字を、パーセント記号(%)で0文字以上の任意の文字列を表すことができます。
「特定の値に似たデータが含まれる列から情報を取得したい」と思ったことはありませんか?例えば、employees(従業員)というテーブルがあり、「役職名に『Sales』という文字列が含まれる従業員の一覧」を取得したい場合を考えてみましょう。
そんなときに活躍するのがSQL LIKE演算子です。この記事では、SQL Server上でLIKE演算子を使い、より具体的なクエリを実行する方法を詳しく解説します。
SQL LIKE演算子とは
SQL LIKE演算子は、列の値が特定のパターンに一致するレコードをデータベースから検索します。パターンは、パーセント記号(%)、アンダースコア(_)、そして検索したいテキストを組み合わせて表現します。
例えば、LIKEを使えば「名前がSで終わる従業員」や「役職にAssociateという文字列を含む従業員」をすべて取得できます。
LIKE演算子は、ワイルドカード文字を使って特定のパターンに一致するデータを取得します。LIKE演算子と一緒によく使われるワイルドカードには、次の2種類があります。
- _(アンダースコア):任意の1文字を表します。
- %(パーセント):0文字以上の任意の文字列を表します。
LIKE演算子の基本構文
LIKE演算子を使ったクエリの基本構造は以下の通りです。
SELECT column_name FROM table_name WHERE column_name LIKE pattern;
この構文では、SQLのSELECT文の中でLIKE演算子を使用しています。なお、LIKE演算子はINSERT文、UPDATE文、DELETE文でも使用可能です。
それでは、具体的な例を使ってSQL LIKEの動作を見ていきましょう。
SQL LIKEの使用例
ある企業の従業員情報を格納したテーブルがあるとします。ここでは、「勤務先の支店名がSという文字で始まる従業員」全員の名前と支店名を取得したいと考えます。
これを実現するには、次のようなクエリを使用します。
SELECT name, branch FROM employees WHERE branch LIKE 'S%';
SQL Serverデータベースは以下の結果を返します。
| name | branch |
| Mike | Stamford |
| Geoff | San Francisco |
| Hannah | San Francisco |
(3行)
文字Sの後にあるパーセント記号(%)は、「Sで始まるすべての支店名を取得する」という意味になります。このクエリは、パターンに一致するすべての文字列を返します。
文字列を前後に含めるパターン検索
今度は、シニアアソシエイトを含む「アソシエイトであるすべての従業員」の名前と役職を取得したいとしましょう。その場合は、次のクエリを使用します。
SELECT name, title FROM employees WHERE title LIKE '%Associate%';
このクエリは、役職が'%Associate%'というパターンに一致するすべての従業員を検索します。実行結果は以下の通りです。
| name | title |
| Luke | Sales Associate |
| Mike | Sales Associate |
| Alexis | Sales Associate |
| Hannah | Sales Associate |
| Geoff | Senior Sales Associate |
パターンの前後に%を配置することで、文字列の途中に「Associate」が含まれていれば、その前後にどんな文字列があっても一致するとみなされます。このように、部分一致検索を簡単に実現できるのがLIKE演算子の強みです。
SQL NOT LIKEの使用例
NOT LIKE演算子を使うと、特定の条件に一致しないすべてのレコードを選択できます。NOT LIKEは、SQLのNOT演算子とLIKE演算子を組み合わせたものであり、条件を満たさないレコードを抽出します。
例えば、NOT LIKEを使えば「名前の長さが4文字ではない従業員」の名前をすべて取得できます。この目的で使えるSQLクエリは以下の通りです。
SELECT name FROM employees WHERE name NOT LIKE '____';
このクエリでは、4つのアンダースコア(____)が「任意の4文字」を表します。NOT LIKEを指定しているため、名前がちょうど4文字である従業員は結果から除外され、それ以外の従業員だけが返されます。
各アンダースコアは1文字に対応するため、名前が4文字より長くても短くても、結果セットには表示されません。
データベースは、検索パターンに基づいて以下のレコードを返します。
| name |
| Alexis Hannah Jonah Geoff |
(4行)
まとめ
SQLのLIKE演算子を使えば、パターンを指定してデータベース内のレコードを検索できます。完全一致の条件を指定しなくても、似たようなレコードを柔軟に見つけられるのが大きな特徴です。LIKE演算子は、SQLステートメントのWHERE句の中で使用します。
この記事では、LIKE句を使ってクエリをより具体的にする方法を解説しました。さらに、NOT LIKE句を使えば、特定の条件に当てはまらない情報を取得することもできます。
ワイルドカード(%と_)の使い方をマスターすれば、あいまい検索や部分一致検索など、実務で役立つ柔軟なデータ抽出が可能になります。ぜひ実際のデータベースで試してみてください。
-
SQL DELETE文の使い方を徹底解説!行を削除する方法と注意点
SQLのDELETE文は、データベーステーブルから行(レコード)を削除するためのコマンドです。WHERE句を組み合わせることで、削除対象のレコードを細かく指定できます。逆にWHERE句を指定しない場合、テーブル内のすべての行が削除されてしまうため、取り扱いには十分な注意が必要です。 行の削除はSQLで非常によく使われる操作の一つです。たとえば、ユーザーがWebサイト上でアカウントを退会した場合、ユーザーデータベースからその人のデータを削除する必要がありますよね。 SQL DELETE文を使えば、テーブルから任意の行を削除できます。この記事では、データベースに対して「行の削除」を実行する方法
-
SQLの学び方完全ガイド:データ管理を始める初心者のためのロードマップ
データ分野のキャリアを目指すなら、データベースに関する知識は欠かせません。データサイエンティストを目指す場合でも、エンジニアとして働きたい場合でも、必ずデータベースと向き合う場面が訪れます。Structured Query Language(SQL)は、開発者がデータを効率的かつ安全に保存するための手段を提供する言語です。SQLは国際的な標準規格として確立されており、コードの書き方に関する明確な指針が定められている点も大きな特徴です。実は、SQLは私たちが日常的に使うテクノロジーの多くを支えています。例えば、Amazonのようなサイトに会員登録すると、名前やメールアドレスはデータベースに保存さ