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';