SQL ワイルドカード

SQL ワイルドカード文字

ワイルドカード文字は文字列内の一つ以上の文字を置き換えるために使用されます。

ワイルドカード文字は LIKE 演算子と一緒に使用されます。LIKE 演算子は、列内の指定されたパターンを検索するために WHERE 句で使用されます。

「a」で始まるすべての顧客を返します:

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

ワイルドカード文字

シンボル 説明
% ゼロ個以上の任意の文字を表します。
_ 一つの任意の文字を表します。
[] 角かっこ内の任意の一文字と一致します。
^ 角かっこ内にない任意の文字に一致します。
指定された範囲内の任意の一文字に一致します。
{} エスケープされた任意の文字に一致します。

* PostgreSQL および MySQL データベースではサポートされていません。

** Oracle データベースのみでサポートされています。

デモデータベース

以下は、例に使用される Customers テーブルからの選択です:

CustomerID CustomerName ContactName Address City PostalCode Country
1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany
2 Ana Trujillo Emparedados y helados Ana Trujillo Avda. de la Constitución 2222 México D.F. 05021 Mexico
3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 México D.F. 05023 Mexico
4 Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK
5 Berglunds snabbköp Christina Berglund Berguvsvägen 8 Luleå S-958 22 Sweden

% ワイルドカードの使用

% ワイルドカードは、ゼロ個以上の文字、すなわち任意の数の文字を表します。

「es」で終わるすべての顧客を返します:

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

「mer」を含むすべての顧客を返します:

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

_ ワイルドカードの使用

_ ワイルドカードは、一つの任意の文字を表します。

それはどんな文字や数字でも構いませんが、各 _ は一つの文字だけを表します。

どんな文字で始まる「ondon」を含む都市のすべての顧客を返します:

SELECT * FROM Customers
WHERE City LIKE '_ondon';

「L」で始まり、どんな3文字でもいい、「on」で終わる都市のすべての顧客を返します:

SELECT * FROM Customers
WHERE City LIKE 'L___on';

[] ワイルドカードの使用

[] ワイルドカードは、角かっこ内のどれかの文字に一致する場合に結果を返します。

「b」、「s」、または「p」で始まるすべての顧客を返します:

SELECT * FROM Customers
WHERE CustomerName LIKE '[bsp]%';

– ワイルドカードの使用

– ワイルドカードは、角かっこ内の指定された範囲の文字に一致します。

「a」、「b」、「c」、「d」、「e」、「f」で始まるすべての顧客を返します:

SELECT * FROM Customers
WHERE CustomerName LIKE '[a-f]%';

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

任意のワイルドカード(例:% および _)は、他のワイルドカードと組み合わせて使用できます。

「a」で始まり、少なくとも3文字の長さの顧客をすべて返します:

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

2番目の位置に「r」を含むすべての顧客を返します:

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

ワイルドカードなし

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

スペインからのすべての顧客を返します:

SELECT * FROM Customers
WHERE Country LIKE 'Spain';

Microsoft Access ワイルドカード

Microsoft Access データベースには他のワイルドカードもあります:

シンボル 説明
* ゼロ個以上の文字を表します。 bl* は bl、black、blue、および blob を見つけます。
? 一つの文字を表します。 h?t は hot、hat、および hit を見つけます。
[] 角かっこ内の任意の一文字と一致します。 h[oa]t は hot および hat を見つけますが、hit は見つけません。
! 角かっこ内にない任意の一文字に一致します。 h[!oa]t は hit を見つけますが、hot および hat は見つけません。
指定された範囲内の任意の一文字に一致します。 c[a-b]t は cat および cbt を見つけます。
# 一つの数値文字に一致します。 2#5 は 205、215、225、235、245、255、265、275、285、および 295 を見つけます。