概要: このチュートリアルでは、SQL LIKE
演算子を使用して、値がパターンと一致するかどうかをテストする方法を学習します。
SQL LIKE 演算子の概要
LIKE 演算子は、SQL 論理演算子の1つです。 LIKE
演算子は、値がパターンと一致する場合は true を返し、そうでない場合は false を返します。
LIKE 演算子の構文は次のとおりです。
expression LIKE pattern
Code language: SQL (Structured Query Language) (sql)
この構文では、LIKE
演算子は式がパターンと一致するかどうかをテストします。 SQL 標準では、パターンを作成するための2つのワイルドカード文字が提供されています。
-
%
パーセント記号のワイルドカードは、ゼロ個、1個、または複数の文字と一致します。 -
_
アンダーバーのワイルドカードは、単一の文字と一致します。
以下は、%および_ワイルドカード文字の使用例を示しています。
式 | 意味 |
---|---|
LIKE 'Kim%' | Kim で始まる文字列と一致します。 |
LIKE '%er' | er で終わる文字列と一致します。 |
LIKE '%ch%' | ch を含む文字列と一致します。 |
LIKE 'Le_' | Le で始まり、1文字が続く文字列と一致します(例:Les、Lenなど)。 |
LIKE '_uy' | uy で終わり、1文字が前にある文字列と一致します(例:guy)。 |
LIKE '%are_' | are を含み、1文字で終わる文字列と一致します。 |
LIKE '_are%' | are を含み、1文字で始まり、任意の数の文字で終わる文字列と一致します。 |
%および_ワイルドカードに加えて、一部のデータベースシステムには、それらのデータベースに固有の他のワイルドカード文字がある場合があります。
NOT LIKE
LIKE
演算子を否定するには、NOT
演算子を使用します。
expression NOT LIKE pattern
NOT LIKE
演算子は、式がパターンと一致しない場合は true を返し、そうでない場合は false を返します。
エスケープ文字
たとえば、10%
のようなワイルドカードを含む文字列と一致させるには、LIKE
演算子に 10%
の %
を通常の文字として扱うように指示する必要があります。
そのためには、ESCAPE
句の後にエスケープ文字を明示的に指定する必要があります。
expression LIKE pattern ESCAPE escape_character
Code language: SQL (Structured Query Language) (sql)
例えば
value LIKE '%10!%%' ESCAPE '!'
Code language: JavaScript (javascript)
この例では、!はエスケープ文字です。 LIKE 演算子に 10% の % を通常の文字として扱うように指示します。
実際には、LIKE
演算子は、WHERE
句、SELECT
、UPDATE
、および DELETE
ステートメントでよく使用されます。
SQL LIKE 演算子の例
デモには、サンプルデータベースの employees
テーブルを使用します。

次の例では、LIKE 演算子を使用して、名(first_name)が Da
で始まるすべての従業員を検索します。
SELECT
employee_id,
first_name,
last_name
FROM
employees
WHERE
first_name LIKE 'Da%';
Code language: SQL (Structured Query Language) (sql)
+-------------+------------+-----------+
| employee_id | first_name | last_name |
+-------------+------------+-----------+
| 105 | David | Austin |
| 109 | Daniel | Faviet |
+-------------+------------+-----------+
Code language: plaintext (plaintext)
次の例では、LIKE 演算子を使用して、名(first_name)が er
で終わるすべての従業員を検索します。
SELECT
employee_id,
first_name,
last_name
FROM
employees
WHERE
first_name LIKE '%er';
Code language: SQL (Structured Query Language) (sql)
+-------------+------------+-----------+
| employee_id | first_name | last_name |
+-------------+------------+-----------+
| 103 | Alexander | Hunold |
| 115 | Alexander | Khoo |
| 200 | Jennifer | Whalen |
+-------------+------------+-----------+
Code language: plaintext (plaintext)
次の例では、LIKE 演算子を使用して、姓(last_name)に an
という単語が含まれる従業員を検索します。
SELECT
employee_id,
first_name,
last_name
FROM
employees
WHERE
last_name LIKE '%an%';
Code language: SQL (Structured Query Language) (sql)
+-------------+-------------+-----------+
| employee_id | first_name | last_name |
+-------------+-------------+-----------+
| 102 | Lex | De Haan |
| 112 | Jose Manuel | Urman |
| 123 | Shanta | Vollman |
| 178 | Kimberely | Grant |
+-------------+-------------+-----------+
Code language: plaintext (plaintext)
次のステートメントは、名(first_name)が Jo
で始まり、最大2文字が続く従業員を取得します。
SELECT
employee_id,
first_name,
last_name
FROM
employees
WHERE
first_name LIKE 'Jo__';
Code language: SQL (Structured Query Language) (sql)
+-------------+------------+-----------+
| employee_id | first_name | last_name |
+-------------+------------+-----------+
| 110 | John | Chen |
| 145 | John | Russell |
+-------------+------------+-----------+
Code language: plaintext (plaintext)
次のステートメントは、LIKE 演算子と%および_ワイルドカードを使用して、名(first_name)が任意の数の文字で始まり、最大1文字が続く従業員を検索します。
SELECT
employee_id,
first_name,
last_name
FROM
employees
WHERE
first_name LIKE '%are_';
Code language: SQL (Structured Query Language) (sql)
+-------------+------------+------------+
| employee_id | first_name | last_name |
+-------------+------------+------------+
| 119 | Karen | Colmenares |
| 146 | Karen | Partners |
+-------------+------------+------------+
SQL NOT LIKE 演算子の例
次の例では、NOT LIKE
演算子を使用して、名(first_name)が文字 S
で始まるが、Sh
で始まらないすべての従業員を検索します。
SELECT
employee_id,
first_name,
last_name
FROM
employees
WHERE
first_name LIKE 'S%'
AND first_name NOT LIKE 'Sh%'
ORDER BY
first_name;
Code language: SQL (Structured Query Language) (sql)
+-------------+------------+-----------+
| employee_id | first_name | last_name |
+-------------+------------+-----------+
| 192 | Sarah | Bell |
| 117 | Sigal | Tobias |
| 100 | Steven | King |
| 203 | Susan | Mavris |
+-------------+------------+-----------+
Code language: plaintext (plaintext)
まとめ
LIKE
演算子は、値がパターンと一致する場合は true を返し、そうでない場合は false を返します。- LIK 演算子を否定するには、
NOT
演算子を使用します。 - 1つ以上の文字と一致させるには、
%
ワイルドカードを使用します。 - 単一の文字と一致させるには、
_
ワイルドカードを使用します。