

 Amazon Redshift tidak akan lagi mendukung pembuatan Python UDFs baru mulai Patch 198. Python yang ada UDFs akan terus berfungsi hingga 30 Juni 2026. Untuk informasi lebih lanjut, lihat [posting blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

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

Dibandingkan dengan fungsi CAST, TRY\$1CAST pertama kali mencoba untuk mentransmisikan ekspresi ke tipe yang ditentukan. Jika casting gagal karena kesalahan konversi, operasi mengembalikan null. Jika konversi tidak diizinkan secara eksplisit, operasi mengembalikan kesalahan. Anda dapat menemukan daftar kemungkinan konversi dalam catatan penggunaan di bawah ini. Misalnya, mencoba mengonversi boolean ke stempel waktu tidak diizinkan. 

## Sintaksis
<a name="r_TRY_CAST-syntax"></a>

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

## Argumen
<a name="r_TRY_CAST-arguments"></a>

 *ekspresi*   
Ekspresi yang mengevaluasi satu atau lebih nilai, seperti nama kolom atau literal. Mengkonversi nilai null mengembalikan nol. Ekspresi tidak dapat berisi string kosong atau kosong. 

 *jenis*   
 Salah satu tipe data yang didukung. Untuk daftar lengkap tipe data, lihat[Jenis Data](c_Supported_data_types.md). Untuk daftar pasangan tipe data sumber dan tipe data target yang didukung, lihat catatan penggunaan di bawah ini. 

## Jenis pengembalian
<a name="r_TRY_CAST-return-type"></a>

TRY\$1CAST mengembalikan nilai tipe data yang ditentukan oleh argumen *tipe*. Jika konversi gagal, operasi mengembalikan null. 

## Catatan penggunaan
<a name="r_TRY_CAST-usage-notes"></a>

Berikut ini adalah daftar tipe data sumber dan pasangan tipe data target yang didukung Amazon Redshift untuk TRY\$1CAST.

 *BOOL*   
 KECIL, INT, BIGINT, SUPER 

 *KECIL*   
 BOOL, INT, BIGINT, DESIMAL, NYATA, MENGAMBANG, BPCHAR, TEKS, VARCHAR, SUPER 

 *INT*   
 BOOL, SMALLINT, BIGINT, DESIMAL, NYATA, FLOAT, BPCHAR, TEKS, VARCHAR, SUPER 

 *BIGINT*   
 BOOL, SMALLINT, INT, DESIMAL, NYATA, FLOAT, BPCHAR, TEKS, VARCHAR, SUPER 

 *DESIMAL*   
 SMALLINT, INT, BIGINT, NYATA, MENGAMBANG, BPCHAR, TEKS, VARCHAR, SUPER 

 *NYATA*   
 SMALLINT, INT, BIGINT, DESIMAL, FLOAT, BPCHAR, TEKS, VARCHAR, SUPER 

 *MENGAPUNG*   
 SMALLINT, INT, BIGINT, DESIMAL, NYATA, BPCHAR, TEKS, VARCHAR, SUPER 

 *BPCHAR*   
 SMALLINT, INT, BIGINT, DESIMAL, NYATA, MENGAMBANG, TEKS, VARCHAR, STEMPEL WAKTU, TIMESTAMPTZ, TANGGAL, WAKTU, TIMETZ, SUPER 

 *TEKS*   
 SMALLINT, INT, BIGINT, DESIMAL, NYATA, MENGAMBANG, BPCHAR, VARCHAR, STEMPEL WAKTU, TIMESTAMPTZ, TANGGAL, WAKTU, TIMETZ, SUPER 

 *VARCHAR*   
 SMALLINT, INT, BIGINT, DESIMAL, NYATA, FLOAT, BPCHAR, TEKS, STEMPEL WAKTU, TIMESTAMPTZ, TANGGAL, WAKTU, TIMETZ, SUPER 

 *STEMPEL WAKTU*   
 BPCHAR, TEKS, VARCHAR, TIMESTAMPTZ, TANGGAL, WAKTU 

 *TIMESTAMPTZ*   
 BPCHAR, TEKS, VARCHAR, STEMPEL WAKTU, TANGGAL, WAKTU, TIMETZ 

 *TANGGAL*   
 BPCHAR, TEKS, VARCHAR, STEMPEL WAKTU, TIMESTAMPTZ 

 *WAKTU*   
 BPCHAR, TEKS, VARCHAR 

 *JADWAL*   
 BPCHAR, TEKS, VARCHAR 

 *SUPER*   
 SUPER dapat dikonversi menjadi tipe data lain, dengan pengecualian DATE, TIME, TIMETZ, TIMESTAMP, dan TIMESTAMPTZ. 

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

Contoh berikut melemparkan STRING ke INTEGER.

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

int
----
123
```

Contoh berikut mengembalikan null. Mengonversi STRING ke INTEGER diizinkan sehingga TRY\$1CAST tidak mengembalikan kesalahan, tetapi 'foo' bukan bilangan bulat sehingga fungsi mengembalikan null.

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

Contoh berikut mengembalikan kesalahan, karena mengonversi BOOLEAN ke TIMESTAMP tidak diizinkan.

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

Karena TRY\$1CAST mengembalikan null alih-alih segera mengembalikan kesalahan jika konversi gagal, Anda dapat menggunakan TRY\$1CAST untuk memfilter data yang tidak valid. Perhatikan contoh berikut, di mana baris yang tidak valid disaring karena kegagalan konversi di kolom usia untuk Akua Mansa.

```
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
```