SQL LIKE 演算子
SQL LIKE 演算子
LIKE 演算子は、指定されたパターンを列で検索するための WHERE 句で使用されます。
LIKE 演算子と一緒によく使用されるワイルドカードには、次の2つがあります:
- %:ゼロ個以上の任意の文字を表します。
- _:一つの任意の文字を表します。
ワイルドカードについての詳細は、次の章で学びます。
例
「a」で始まるすべての顧客を選択します:
SELECT * FROM Customers
WHERE CustomerName LIKE 'a%';
構文
SELECT column1, column2, ...
FROM table_name
WHERE columnN LIKE pattern;
デモデータベース
以下は、例に使用される 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 |
_ ワイルドカード
_ ワイルドカードは、一つの任意の文字を表します。
それはどんな文字や数字でも構いませんが、各 _ は一つの文字だけを表します。
例
‘L’ で始まり、1つのワイルドカード文字が続き、’nd’ が後に続き、さらに2つのワイルドカード文字が続く都市からのすべての顧客を返します:
SELECT * FROM Customers
WHERE city LIKE 'L_nd__';
% ワイルドカード
% ワイルドカードは、ゼロ個以上の文字、すなわち任意の数の文字を表します。
例
‘L’ を含む都市からのすべての顧客を返します:
SELECT * FROM Customers
WHERE city LIKE '%L%';
指定文字で始まるもの
特定の文字またはフレーズで始まるレコードを返すには、文字またはフレーズの末尾に % を追加します。
例
‘La’ で始まるすべての顧客を返します:
SELECT * FROM Customers
WHERE CustomerName LIKE 'La%';
ヒント:AND または OR 演算子を使用して任意の数の条件を組み合わせることができます。
例
‘a’ で始まる顧客または ‘b’ で始まる顧客を返します:
SELECT * FROM Customers
WHERE CustomerName LIKE 'a%' OR CustomerName LIKE 'b%';
指定文字で終わるもの
特定の文字またはフレーズで終わるレコードを返すには、文字またはフレーズの先頭に % を追加します。
例
‘a’ で終わるすべての顧客を返します:
SELECT * FROM Customers
WHERE CustomerName LIKE '%a';
ヒント:「始まりが」や「終わりが」を組み合わせることもできます。
例
‘b’ で始まり、’s’ で終わるすべての顧客を返します:
SELECT * FROM Customers
WHERE CustomerName LIKE 'b%s';
含むもの
特定の文字またはフレーズを含むレコードを返すには、文字またはフレーズの両端に % を追加します。
例
‘or’ を含むすべての顧客を返します:
SELECT * FROM Customers
WHERE CustomerName LIKE '%or%';
ワイルドカードの組み合わせ
任意のワイルドカード(例:% および _)は、他のワイルドカードと組み合わせて使用できます。
例
‘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';