SQL ワイルドカード


ワイルドカードは、文字列内の他の任意の文字を置き換えるために使用できます。


SQL ワイルドカード

SQL では、ワイルドカードは SQL LIKE 演算子と一緒に使用します。

SQL ワイルドカードは、テーブル内のデータを検索するために使用されます。

SQL では、次のワイルドカードを使用できます:

ワイルドカード 説明
% 0 個以上の文字を置き換える
_ 1 つの文字を置き換える
[charlist] 文字リスト内の任意の 1 文字
[^charlist]
或
[!charlist]
文字リスト内にない任意の 1 文字


デモデータベース

このチュートリアルでは、サンプル サンプルデータベースを使用します。

以下は "Websites" テーブルから選んだデータです。

mysql> SELECT * FROM Websites;
+----+---------------+---------------------------+-------+---------+
| id | name          | url                       | alexa | country |
+----+---------------+---------------------------+-------+---------+
|  1 | Google        | https://www.google.cm/    |     1 | USA     |
|  2 | 淘宝          | https://www.taobao.com/   |    13 | CN      |
|  3 | サンプル       | http://www.example.com/    |  5000 | USA     |
|  4 | 微博           | http://weibo.com/         |    20 | CN      |
|  5 | Facebook      | https://www.facebook.com/ |     3 | USA     |
|  7 | stackoverflow | http://stackoverflow.com/ |     0 | IND     |
+----+---------------+---------------------------+-------+---------+


SQL % ワイルドカードの使用

次の SQL 文は、url が文字 "https" で始まるすべての Web サイトを選択します。

例

SELECT * FROM Websites
WHERE url LIKE 'https%';

実行出力結果:

次の SQL 文は、url にパターン "oo" を含むすべての Web サイトを選択します。

例

SELECT * FROM Websites
WHERE url LIKE '%oo%';

実行出力結果:



SQL _ ワイルドカードの使用

次の SQL 文は、name が任意の 1 文字で始まり、その後に "oogle" が続くすべての顧客を選択します。

例

SELECT * FROM Websites
WHERE name LIKE '_oogle';

実行出力結果:

次の SQL 文は、name が "G" で始まり、任意の 1 文字、次に "o"、任意の 1 文字、次に "le" が続くすべての Web サイトを選択します。

例

SELECT * FROM Websites
WHERE name LIKE 'G_o_le';

実行出力結果:



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

SQL では、[charlist] ワイルドカードは文字のリストを指定し、そのリスト内の任意の 1 文字を照合するために使用されます。

これは通常、WHERE 句などでパターンマッチングのために LIKE 演算子と一緒に使用されます。

次の SQL 文は、name が "G"、"F"、または "s" で始まるすべての Web サイトを選択します。

例

SELECT * FROM Websites
WHERE name REGEXP '^[GFs]';

実行出力結果:

次の SQL 文は、name が A から H の文字で始まる Web サイトを選択します。

例

SELECT * FROM Websites
WHERE name REGEXP '^[A-H]';

実行出力結果:

次の SQL 文は、name が A から H の文字で始まらない Web サイトを選択します。

例

SELECT * FROM Websites
WHERE name REGEXP '^[^A-H]';

実行出力結果:

その他の拡張