

 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/)を参照してください。

# DECODE 関数
<a name="r_DECODE_expression"></a>

DECODE 式は、等価条件の結果に応じて、特定の値を別の特定の値またはデフォルト値で置換します。この演算は簡易 CASE 式または IF-THEN-ELSE ステートメントの演算と同じです。

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

```
DECODE ( expression, search, result [, search, result ]... [ ,default ] )
```

このタイプの式は、テーブルに格納されている略語またはコードを、レポートに必要な意味のあるビジネス値に置き換える場合に便利です。

## パラメータ
<a name="r_DECODE_expression-parameters"></a>

 *expression*   
テーブル内の列など、比較する値のソース。

 *\$1search*   
ソース式と比較されるターゲット値 (数値や文字列など)。検索式の結果は単一の固定値である必要があります。値の範囲 (`age between 20 and 29` など) を検証する式を指定することはできません。置換する値ごとに個別の検索/結果のペアを指定する必要があります。  
検索式のすべてのインスタンスのデータ型は、同じまたは互換性がある必要があります。*expression* および *search* パラメータも互換性のある必要があります。

 *結果*   
式が検索値を満たす場合、クエリが返す置換値。DECODE 式に少なくとも 1 の検索/結果のペアを含める必要があります。  
結果式のすべてのインスタンスのデータ型は同じまたは互換性がある必要があります。*result* および *default* パラメータも互換性のある必要があります。

 *default*   
検索条件が失敗した場合に使用されるオプションのデフォルト値。デフォルト値を指定しない場合、DECODE 式は NULL を返します。

## 使用に関する注意事項
<a name="decode-expression-usage-notes"></a>

*expression* 値と *search* 値が両方とも NULL の場合、DECODE 結果は対応する *result* の値になります。関数のこの使用方法の説明については、「例」のセクションを参照してください。

このように使用する場合、DECODE は「[NVL2 関数](r_NVL2.md)」に似ていますが、いくつかの違いがあります。その違いについては、NVL2 の使用に関する注意事項を参照してください。

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

値 `2008-06-01` が datetable の caldate 列に存在する場合、次の例ではこれが `June 1st, 2008` に置換されます。この例では、他のすべての caldate 値が NULL に置き換えられます。

```
select decode(caldate, '2008-06-01', 'June 1st, 2008')
from datetable where month='JUN' order by caldate;

case
----------------
June 1st, 2008

...
(30 rows)
```

次の例では、DECODE 式を使用して、CATEGORY テーブルの 5 つの省略された CATNAME 列を完全名に変換し、列の他の値を `Unknown` に変換します。

```
select catid, decode(catname,
'NHL', 'National Hockey League',
'MLB', 'Major League Baseball',
'MLS', 'Major League Soccer',
'NFL', 'National Football League',
'NBA', 'National Basketball Association',
'Unknown')
from category
order by catid;

catid  |	case
-------+---------------------------------
1      | Major League Baseball
2      | National Hockey League
3      | National Football League
4      | National Basketball Association
5      | Major League Soccer
6      | Unknown
7      | Unknown
8      | Unknown
9      | Unknown
10     | Unknown
11     | Unknown
(11 rows)
```

DECODE 式を使用して、VENUESEATS 列が NULL のコロラドとネバダの会場を検索して、NULL をゼロに変換します。VENUESEATS 列が NULL でない場合は、結果として 1 を返します。

```
select venuename, venuestate, decode(venueseats,null,0,1)
from venue
where venuestate in('NV','CO')
order by 2,3,1;

venuename	              | venuestate     | case
------------------------------+----------------+-----------
Coors Field                   |	CO	       |   1
Dick's Sporting Goods Park    |	CO	       |   1
Ellie Caulkins Opera House    |	CO	       |   1
INVESCO Field		      |	CO	       |   1
Pepsi Center		      |	CO	       |   1
Ballys Hotel		      |	NV	       |   0
Bellagio Hotel                |	NV	       |   0
Caesars Palace                |	NV	       |   0
Harrahs Hotel                 |	NV	       |   0
Hilton Hotel                  |	NV	       |   0
...						
(20 rows)
```