LIKE - Amazon Redshift

LIKE

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

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

構文

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

引数

expression

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

LIKE | ILIKE

LIKE は大文字小文字を区別するパターンマッチングを実行します。ILIKE は、シングルバイト UTF-8 (ASCII) 文字に対して大文字小文字を区別しないパターンマッチングを実行します。マルチバイト文字に対して大文字と小文字を区別しないパターンの一致を実行するには、LIKE 条件の patternpatternLOWER 関数を使用します。

= や <> などの比較述語とは対照的に、述語 LIKE と ILIKE は、末尾の空白を暗黙的に無視しません。末尾のスペースを無視するには、RTRIM を使用するか、または CHAR 列を VARCHAR に明示的にキャストします。

~~ 演算子は LIKE に相当し、~~* は ILIKE に相当します。また、!~~ および !~~* 演算子は、NOT LIKE および NOT 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」で始まるすべての市を見つけます。

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」が含まれるユーザーを見つけます。

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

次の例は、複数のパターンを一致させる方法を示しています。

select distinct lastname from tickit.users where lastname like 'Chris%' or lastname like '%Wooten' order by lastname; lastname ------------- Christensen Christian Wooten ...

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

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

次の例では、デフォルトのエスケープ文字列 (\\) を使用して「start_」を含む文字列を検索します (テキスト start、それに続いてアンダースコア _)。

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)

次の例では、エスケープ文字として '^' を指定し、そのエスケープ文字を使用して「start_」を含む文字列を検索します (テキスト start、それに続いてアンダースコア _)。

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)

次の例では、~~* 演算子を使用して「Ag」で始まる都市の大文字と小文字を区別しない (ILIKE) 検索を行います。

select distinct city from users where city ~~* 'Ag%' order by city; city ------------ Agat Agawam Agoura Hills Aguadilla