

 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 CAST
<a name="r_CAST_function"></a>

Fungsi CAST mengubah satu tipe data ke tipe data lain yang kompatibel. Misalnya, Anda dapat mengonversi string ke tanggal, atau tipe numerik menjadi string. CAST melakukan konversi runtime, yang berarti konversi tidak mengubah tipe data nilai dalam tabel sumber. Itu hanya berubah dalam konteks kueri.

Fungsi CAST sangat mirip dengan[Fungsi CONVERT](r_CONVERT_function.md), karena keduanya mengonversi satu tipe data ke tipe data lainnya, tetapi mereka disebut berbeda.

Tipe data tertentu memerlukan konversi eksplisit ke tipe data lain menggunakan fungsi CAST atau CONVERT. Tipe data lain dapat dikonversi secara implisit, sebagai bagian dari perintah lain, tanpa menggunakan CAST atau CONVERT. Lihat [Ketik kompatibilitas dan konversi](c_Supported_data_types.md#r_Type_conversion). 

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

Gunakan salah satu dari dua bentuk sintaks yang setara ini untuk mentransmisikan ekspresi dari satu tipe data ke tipe data lainnya.

```
CAST ( expression AS type )
expression :: type
```

## Pendapat
<a name="r_CAST_function-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 yang didukung[Jenis Data](c_Supported_data_types.md). 

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

CAST mengembalikan tipe data yang ditentukan oleh argumen *tipe*. 

**catatan**  
Amazon Redshift mengembalikan kesalahan jika Anda mencoba melakukan konversi bermasalah, seperti konversi DECIMAL yang kehilangan presisi, seperti berikut ini:   

```
select 123.456::decimal(2,1);
```
atau konversi INTEGER yang menyebabkan overflow:   

```
select 12345678::smallint;
```

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

Beberapa contoh menggunakan [database TICKIT](https://docs.aws.amazon.com/redshift/latest/dg/c_sampledb.html) sampel. Untuk informasi selengkapnya tentang menyiapkan data sampel, lihat [Memuat data](https://docs.aws.amazon.com/redshift/latest/gsg/cm-dev-t-load-sample-data.html).

Dua pertanyaan berikut adalah setara. Keduanya memberikan nilai desimal ke bilangan bulat: 

```
select cast(pricepaid as integer)
from sales where salesid=100;

pricepaid
-----------
162
(1 row)
```

```
select pricepaid::integer
from sales where salesid=100;

pricepaid
-----------
162
(1 row)
```

Berikut ini menghasilkan hasil yang serupa. Tidak memerlukan data sampel untuk dijalankan: 

```
select cast(162.00 as integer) as pricepaid;

pricepaid
-----------
162
(1 row)
```

Dalam contoh ini, nilai dalam kolom stempel waktu dilemparkan sebagai tanggal, yang mengakibatkan penghapusan waktu dari setiap hasil:

```
select cast(saletime as date), salesid
from sales order by salesid limit 10;

 saletime  | salesid
-----------+---------
2008-02-18 |       1
2008-06-06 |       2
2008-06-06 |       3
2008-06-09 |       4
2008-08-31 |       5
2008-07-16 |       6
2008-06-26 |       7
2008-07-10 |       8
2008-07-22 |       9
2008-08-06 |      10
(10 rows)
```

Jika Anda tidak menggunakan CAST seperti yang diilustrasikan dalam sampel sebelumnya, hasilnya akan mencakup waktu: *2008-02-18* 02:36:48.

Kueri berikut melemparkan data karakter variabel ke tanggal. Tidak memerlukan data sampel untuk dijalankan. 

```
select cast('2008-02-18 02:36:48' as date) as mysaletime;

mysaletime    
--------------------
2008-02-18  
(1 row)
```

Dalam contoh ini, nilai dalam kolom tanggal dilemparkan sebagai stempel waktu: 

```
select cast(caldate as timestamp), dateid
from date order by dateid limit 10;

      caldate       | dateid
--------------------+--------
2008-01-01 00:00:00 |   1827
2008-01-02 00:00:00 |   1828
2008-01-03 00:00:00 |   1829
2008-01-04 00:00:00 |   1830
2008-01-05 00:00:00 |   1831
2008-01-06 00:00:00 |   1832
2008-01-07 00:00:00 |   1833
2008-01-08 00:00:00 |   1834
2008-01-09 00:00:00 |   1835
2008-01-10 00:00:00 |   1836
(10 rows)
```

Dalam kasus seperti sampel sebelumnya, Anda dapat memperoleh kontrol tambahan atas pemformatan output dengan menggunakan [TO\$1CHAR](https://docs.aws.amazon.com/redshift/latest/dg/r_TO_CHAR.html).

Dalam contoh ini, bilangan bulat dilemparkan sebagai string karakter: 

```
select cast(2008 as char(4));

bpchar
--------
2008
```

Dalam contoh ini, nilai DECIMAL (6,3) dilemparkan sebagai nilai DECIMAL (4,1): 

```
select cast(109.652 as decimal(4,1));

numeric
---------
109.7
```

Contoh ini menunjukkan ekspresi yang lebih kompleks. Kolom PRICEPAID (kolom DECIMAL (8,2)) dalam tabel PENJUALAN dikonversi ke kolom DECIMAL (38,2) dan nilainya dikalikan dengan 100000000000000000000: 

```
select salesid, pricepaid::decimal(38,2)*100000000000000000000
as value from sales where salesid<10 order by salesid;


 salesid |           value
---------+----------------------------
       1 | 72800000000000000000000.00
       2 |  7600000000000000000000.00
       3 | 35000000000000000000000.00
       4 | 17500000000000000000000.00
       5 | 15400000000000000000000.00
       6 | 39400000000000000000000.00
       7 | 78800000000000000000000.00
       8 | 19700000000000000000000.00
       9 | 59100000000000000000000.00
(9 rows)
```

**catatan**  
Anda tidak dapat melakukan operasi CAST atau CONVERT pada tipe `GEOMETRY` data untuk mengubahnya ke tipe data lain. Namun, Anda dapat memberikan representasi heksadesimal dari string literal dalam format biner terkenal (EWKB) yang diperluas sebagai masukan ke fungsi yang menerima argumen. `GEOMETRY` Misalnya, `ST_AsText` fungsi berikut mengharapkan tipe `GEOMETRY` data.   

```
SELECT ST_AsText('01010000000000000000001C400000000000002040');
```

```
st_astext  
------------
 POINT(7 8)
```
Anda juga dapat secara eksplisit menentukan tipe `GEOMETRY` data.   

```
SELECT ST_AsText('010100000000000000000014400000000000001840'::geometry);
```

```
st_astext  
------------
 POINT(5 6)
```