SQL 速習チュートリアル

SQL LIKE 演算子

1. SQL LIKE 演算子

LIKE 演算子は、WHERE 句内で使用され、カラムのテキストデータの中から指定されたパターンを検索するために使用されます。

LIKE 演算子と組み合わせてよく使用されるワイルドカードは 2 つあります:

  • パーセント記号 (%):0 文字、1 文字、または複数文字のいずれかを表します。
  • アンダースコア記号 (_):単一の文字を表します。

次の SQL は、名前が "a" で始まるすべての顧客(Customers)を選択します。

1.1 例(自分専用の SQL Server を取得)

"a" で始まるすべての顧客を選択:

SELECT * FROM Customers
WHERE CustomerName LIKE 'a%';

2. シンタックス

SELECT column1, column2, ...
FROM table_name
WHERE columnN LIKE pattern;

3. デモ用データベース

以下は、例題で使用する Customers テーブルの抜粋です。

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.05021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.05023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

4. % ワイルドカード

% ワイルドカードは、任意の数の文字を表します(0 文字の場合も含みます)。

4.1 例

City(都市名)に 'on' という文字の並びが含まれているすべての顧客をリターンします:

SELECT * FROM Customers
WHERE city LIKE '%on%';

5. _ ワイルドカード

_ ワイルドカードは、単一の文字を表します。任意の文字や数字を指すことができますが、1 つの _ は必ず 1 つの文字に対応します。

5.1 例

City が 'l' で始まり、次に 1 つのワイルドカード文字、その後に 'nd'、そして最後に 2 つのワイルドカード文字が続くすべての顧客をリターンします:

SELECT * FROM Customers
WHERE city LIKE 'l_nd__';

6. 前方一致(Starts With)

特定の文字やフレーズで始まるレコードをリターンするには、その文字やフレーズの最後に % を付けます。

6.1 例

'La' で始まるすべての顧客をリターンします:

SELECT * FROM Customers
WHERE CustomerName LIKE 'La%';

       ヒント:ANDOR 演算子を使用して、任意の数の条件を組み合わせることも可能です。

6.2 例

'a' で始まる、または 'b' で始まるすべての顧客をリターンします:

SELECT * FROM Customers
WHERE CustomerName LIKE 'a%' OR CustomerName LIKE 'b%';

7. 後方一致(Ends With)

特定の文字やフレーズで終わるレコードをリターンするには、その文字やフレーズの先頭に % を付けます。

7.1 例

'a' で終わるすべての顧客をリターンします:

SELECT * FROM Customers
WHERE CustomerName LIKE '%a';

ヒント: 「前方一致」と「後方一致」を組み合わせることもできます。

7.2 例

'b' で始まり 's' で終わるすべての顧客をリターンします:

SELECT * FROM Customers
WHERE CustomerName LIKE 'b%s';

8. 部分一致(Contains)

特定の文字やフレーズが含まれているレコードをリターンするには、その文字やフレーズの前後の両方に % を付けます。

8.1 例

'or' というフレーズが含まれているすべての顧客をリターンします:

SELECT * FROM Customers
WHERE CustomerName LIKE '%or%';

9. ワイルドカードの組み合わせ

%_ などのワイルドカードは、他のワイルドカードと組み合わせて使用できます。

9.1 例

'a' で始まり、かつ長さが少なくとも 3 文字以上あるすべての顧客をリターンします:

SELECT * FROM Customers
WHERE CustomerName LIKE 'a__%';

9.2 例

2 文字目に "r" があるすべての顧客をリターンします:

SELECT * FROM Customers
WHERE CustomerName LIKE '_r%';

10. ワイルドカードなしの場合

ワイルドカードが指定されていない場合、検索フレーズは完全に一致(完全一致)する必要があります。

10.1 例

Country(国)が Spain であるすべての顧客をリターンします:

SELECT * FROM Customers
WHERE Country LIKE 'Spain';