

 Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の Python UDF は、2026 年 6 月 30 日まで引き続き機能します。詳細については、[ブログ記事](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)を参照してください。

# LIKE
<a name="r_patternmatching_condition_like"></a>

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

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

## 構文
<a name="r_patternmatching_condition_like-synopsis"></a>

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

## 引数
<a name="r_patternmatching_condition_like-arguments"></a>

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

LIKE \$1 ILIKE   
LIKE は大文字小文字を区別するパターンマッチングを実行します。ILIKE は、シングルバイト UTF-8 (ASCII) 文字に対して大文字小文字を区別しないパターンマッチングを実行します。マルチバイト文字に対して大文字と小文字を区別しないパターンの一致を実行するには、LIKE 条件の *pattern* と *pattern* で [LOWER](r_LOWER.md) 関数を使用します。  
= や <> などの比較述語とは対照的に、述語 LIKE と ILIKE は、末尾の空白を暗黙的に無視しません。末尾のスペースを無視するには、RTRIM を使用するか、または CHAR 列を VARCHAR に明示的にキャストします。  
`~~` 演算子は LIKE に相当し、`~~*` は ILIKE に相当します。また、`!~~` および `!~~*` 演算子は、NOT LIKE および NOT ILIKE に相当します。

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

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

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

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

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

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/dg/r_patternmatching_condition_like.html)

## 例
<a name="r_patternmatching_condition_like-examples"></a>

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

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/dg/r_patternmatching_condition_like.html)

次の例では、名前が「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)
```

次の例では、デフォルトのエスケープ文字列 (\$1\$1) を使用して「start\$1」を含む文字列を検索します (テキスト `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\$1」を含む文字列を検索します (テキスト `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
```