

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

# TRY\$1CAST 関数
<a name="r_TRY_CAST"></a>

CAST 関数とは異なり、TRY\$1CAST は最初に式を指定された型にキャストしようとします。変換エラーによりキャストが失敗した場合、オペレーションは null を返します。変換が明示的に許可されていない場合、オペレーションはエラーを返します。許可されている変換のリストは、以下の使用に関する注意事項に記載されています。例えば、ブール値のタイムスタンプへの変換は許可されていません。

## 構文
<a name="r_TRY_CAST-syntax"></a>

```
TRY_CAST(expression AS type)
```

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

 *expression*   
1 つ以上の値 (列名、値など) に評価される式。null 値を変換すると、null が返されます。式に、空白または空の文字列を含めることはできません。

 *型*   
 サポートされているデータ型。データ型の完全なリストについては、「[データ型](c_Supported_data_types.md)」を参照してください。サポートされているソースデータ型とターゲットデータ型のペアのリストについては、以下の使用に関する注意事項を参照してください。

## 戻り型
<a name="r_TRY_CAST-return-type"></a>

TRY\$1CAST は、*type* 引数で指定されたデータ型の値を返します。変換が失敗した場合、オペレーションは null を返します。

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

以下は、Amazon Redshift が TRY\$1CAST でサポートするソースデータ型とターゲットデータ型のペアのリストです。

 * BOOL *   
 SMALLINT、INT、BIGINT、SUPER 

 * SMALLINT *   
 BOOL、INT、BIGINT、DECIMAL、REAL、FLOAT、BPCHAR、TEXT、VARCHAR、SUPER 

 * INT *   
 BOOL、SMALLINT、BIGINT、DECIMAL、REAL、FLOAT、BPCHAR、TEXT、VARCHAR、SUPER 

 * BIGINT *   
 BOOL、SMALLINT、INT、DECIMAL、REAL、FLOAT、BPCHAR、TEXT、VARCHAR、SUPER 

 * DECIMAL *   
 SMALLINT、INT、BIGINT、REAL、FLOAT、BPCHAR、TEXT、VARCHAR、SUPER 

 * REAL *   
 SMALLINT、INT、BIGINT、DECIMAL、FLOAT、BPCHAR、TEXT、VARCHAR、SUPER 

 * FLOAT *   
 SMALLINT、INT、BIGINT、DECIMAL、REAL、BPCHAR、TEXT、VARCHAR、SUPER 

 * BPCHAR *   
 SMALLINT、INT、BIGINT、DECIMAL、REAL、FLOAT、TEXT、VARCHAR、TIMESTAMP、TIMESTAMPTZ、DATE、TIME、TIMETZ、SUPER 

 * TEXT *   
 SMALLINT、INT、BIGINT、DECIMAL、REAL、FLOAT、BPCHAR、VARCHAR、TIMESTAMP、TIMESTAMPTZ、DATE、TIME、TIMETZ、SUPER 

 * VARCHAR *   
 SMALLINT、INT、BIGINT、DECIMAL、REAL、FLOAT、BPCHAR、TEXT、TIMESTAMP、TIMESTAMPTZ、DATE、TIME、TIMETZ、SUPER 

 * TIMESTAMP *   
 BPCHAR、TEXT、VARCHAR、TIMESTAMPTZ、DATE、TIME 

 * TIMESTAMPTZ *   
 BPCHAR、TEXT、VARCHAR、TIMESTAMP、DATE、TIME、TIMETZ 

 * DATE *   
 BPCHAR、TEXT、VARCHAR、TIMESTAMP、TIMESTAMPTZ 

 * TIME *   
 BPCHAR、TEXT、VARCHAR 

 * TIMETZ *   
 BPCHAR、TEXT、VARCHAR 

 * SUPER *   
 SUPER は、DATE、TIME、TIMETZ、TIMESTAMP、TIMESTAMPTZ を除き、他の任意のデータ型に変換できます。

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

次の例では、STRING を INTEGER にキャストします。

```
SELECT TRY_CAST('123' AS INT);

int
----
123
```

次の例は、null を返します。STRING を INTEGER に変換することは許可されているため、TRY\$1CAST はエラーを返しませんが、'foo' は整数ではないため、関数は null を返します。

```
SELECT TRY_CAST('foo' AS INT)
```

次の例では、BOOLEAN を TIMESTAMP に変換することは許可されていないため、エラーを返します。

```
SELECT TRY_CAST(true as timestamp);
```

TRY\$1CAST は変換が失敗した場合にエラーをすぐに返す代わりに null を返すため、TRY\$1CAST を使用して無効なデータをフィルタリングできます。次の例では、Akua Mansa の age 列で変換が失敗したために無効な行が除外されます。

```
CREATE TABLE IF NOT EXISTS student_data(
name VARCHAR(100) NOT NULL,
age VARCHAR(3) NOT NULL,
enrollment_date DATE NOT NULL);

INSERT INTO student_data (name, age, enrollment_date)
VALUES
('Alejandro Rosalez', '10', '01/01/2000'),
('Akua Mansa', 'Ten', '01/01/2000');

SELECT * FROM student_data WHERE TRY_CAST(age AS INT) IS NOT NULL;

--Akua is not returned.
 name              | age | enrollment_date
-------------------+-----+-----------------
 Alejandro Rosalez | 10  | 01/01/2000
```