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 を見つけます。 |