メニュー
Amazon Redshift
データベース開発者ガイド (API Version 2012-12-01)

LIKE

LIKE 演算子は、列名などの文字列式を、ワイルドカード文字 % (パーセント) および _ (アンダースコア) を使用したパターンと比較します。LIKE パターンマッチングは常に文字列全体を網羅します。文字列内の任意の場所にあるシーケンスをマッチングするには、パターンがパーセント符号で始まりパーセント符号で終了する必要があります。

LIKE は大文字小文字を区別し、ILIKE は大文字小文字を区別しません。

構文

Copy
expression [ NOT ] LIKE | ILIKE pattern [ ESCAPE 'escape_char' ]

引数

expression

列名など、有効な UTF-8 文字式。

LIKE | ILIKE

LIKE は大文字小文字を区別するパターンマッチングを実行します。ILIKE は、シングルバイト文字に対して大文字小文字を区別しないパターンマッチングを実行します。LIKE と ILIKE は両方とも、マルチバイト文字に対して大文字小文字を区別しないパターンマッチングを実行します。

pattern

マッチングするパターンが含まれる有効な UTF-8 文字式。

escape_char

パターン内でメタ文字をエスケープする文字式。デフォルトは 2 個のバックスラッシュ (「\\」) です。

pattern にメタ文字が含まれていない場合、pattern は文字列そのものを表現するにすぎません。その場合、LIKE は等号演算子と同じ働きをします。

どちらの文字式も CHAR または VARCHAR のデータ型になることができます。文字式の型が異なる場合、Amazon Redshift は pattern のデータ型を expression のデータ型に変換します。

LIKE では、次のパターンマッチングメタ文字をサポートしています。

演算子 説明
% ゼロ個以上の任意の文字シーケンスをマッチングします。
_ 任意の 1 文字をマッチングします。

次の例では、LIKE を使用したパターンマッチングの例を示します。

戻り値
'abc' LIKE 'abc' True
'abc' LIKE 'a%' True
'abc' LIKE '_B_' False
'abc' ILIKE '_B_' True
'abc' LIKE 'c%' False

次の例では、名前が「E」で始まるすべての市を見つけます。

Copy
select distinct city from users where city like 'E%' order by city; city --------------- East Hartford East Lansing East Rutherford East St. Louis Easthampton Easton Eatontown Eau Claire ...

次の例では、姓に「ten」が含まれるユーザーを見つけます。

Copy
select distinct lastname from users where lastname like '%ten%' order by lastname; lastname ------------- Christensen Wooten ...

次の例では、3 番目と 4 番目の文字が「ea」になっている市を見つけます。コマンドでは ILIKE を使用して、大文字小文字の区別なしを実演します。

Copy
select distinct city from users where city ilike '__EA%' order by city; city ------------- Brea Clearwater Great Falls Ocean City Olean Wheaton (6 rows)

次の例では、デフォルトのエスケープ文字列 (\\) を使用して「_」を含む文字列を検索します。

Copy
select tablename, "column" from pg_table_def where "column" like '%start\\_%' limit 5; tablename | column -------------------+--------------- stl_s3client | start_time stl_tr_conflict | xact_start_ts stl_undone | undo_start_ts stl_unload_log | start_time stl_vacuum_detail | start_row (5 rows)

次の例では、エスケープ文字として '^' を指定し、エスケープ文字を使用して「_」を含む文字列を検索します。

Copy
select tablename, "column" from pg_table_def where "column" like '%start^_%' escape '^' limit 5; tablename | column -------------------+--------------- stl_s3client | start_time stl_tr_conflict | xact_start_ts stl_undone | undo_start_ts stl_unload_log | start_time stl_vacuum_detail | start_row (5 rows)

このページの内容: