スポンサーリンク

【SQL】LIKE句の使い方

記事内に広告が含まれています。

SQLのLIKE句は、文字列のパターンマッチングを行う際に使用する便利な条件式です。

文字列の一部が一致しているデータを検索したいときや、特定のパターンに合う文字列を絞り込むときに活用されます。

スポンサーリンク

基本的なLIKEの構文

LIKE句は、WHERE条件式で使用され、パターンに合う文字列を検索します。構文は次の通りです。

SELECT 列名 FROM テーブル名
WHERE 列名 LIKE 'パターン';

LIKE句では、以下の2つのワイルドカードを使用してパターンを指定します。

%:0文字以上の任意の文字列にマッチします。

_:任意の1文字にマッチします。

スポンサーリンク

ワイルドカードの使い方

%を使った検索

%は0文字以上の任意の文字列にマッチするため、部分一致検索に適しています。

“a”で始まるすべての名前を検索する場合、以下のように記述します。

SELECT name FROM users
WHERE name LIKE 'a%';

このクエリは、name列で”a”から始まる全ての名前を返します。

例えば、aliceandrewなどが該当します。

_を使った検索

_は任意の1文字にマッチするため、特定の文字位置に制限を設けた検索に使えます。

2文字目が”o”の名前を検索する場合、以下のように記述します。

SELECT name FROM users
WHERE name LIKE '_o%';

このクエリは、name列で2文字目が”o”である全ての名前を返します。例えば、johntomなどが該当します。

特殊文字の検索

LIKE句でワイルドカードと同じ文字(例えば%_)を検索したい場合、それらはエスケープする必要があります。

通常、エスケープ文字はデータベースシステムに応じて異なりますが、SQL標準ではバックスラッシュ\\を使うことができます。

名前に%を含む行を検索する場合、以下のように記述します。

SELECT name FROM users
WHERE name LIKE '%\%%' ESCAPE '\';

このクエリでは、%を含むすべての名前を検索します。

ESCAPE '\'を指定することで、%はワイルドカードとしてではなく、文字として扱われます。

複数の条件を組み合わせたLIKEの使い方

LIKE句を他の条件と組み合わせて、詳細な検索を行うことが可能です。

例えば、ANDORを使って複数のパターンに合致する行を探すことができます。

“a”で始まるが、”b”で終わる名前を検索する場合、以下のように記述します。

SELECT name FROM users
WHERE name LIKE 'a%' AND name LIKE '%b';

このクエリでは、name列で”a”で始まり、かつ”b”で終わるすべての名前を返します。例えば、alexbが該当します。

大文字小文字の区別

SQLのLIKE句の大文字小文字の扱いは、データベースシステムに依存します。

例えば、MySQLではデフォルトで大文字小文字を区別しない検索が行われますが、PostgreSQLなど他のシステムでは区別する場合もあります。

大文字小文字を区別せずに検索する例(PostgreSQLの場合)
SELECT name FROM users
WHERE name ILIKE 'a%';

ILIKELIKEと同様の機能を持ちますが、大文字小文字を区別しない検索を行います。

まとめ

LIKE句は、SQLで文字列検索を行う際に非常に便利な機能です。ワイルドカードの%_をうまく活用することで、部分一致検索や特定のパターンマッチングが簡単に行えます。

スポンサーリンク
SQL
著者SNS
タイトルとURLをコピーしました