Penjelasan sederhana
Setiap kolom di database punya tipe data: angka, teks, tanggal, dan sebagainya. CAST mengubah sebuah nilai dari satu tipe ke tipe lain, misalnya teks "2026" menjadi angka 2026.
Ini penting karena teks dan angka diperlakukan berbeda. Teks tidak bisa dijumlahkan, dan urutan teks "10" ada sebelum "9" karena dibandingkan huruf per huruf.
Sintaks
CAST(nilai AS tipe_data)
| Bagian | Keterangan |
|---|---|
tipe_data | INTEGER, DECIMAL(10,2), VARCHAR(50), DATE, dan sebagainya. |
Tanda [kurung siku] berarti bagian opsional. Kata kunci SQL tidak membedakan huruf besar-kecil, tapi menulisnya dengan huruf besar membuat query lebih mudah dibaca.
Contoh CAST
Data contoh: karyawan
Tabel karyawan
| id | nama | dept_id | kota | gaji | tgl_masuk | atasan_id |
|---|---|---|---|---|---|---|
| 1 | Andi Pratama | 3 | Bandung | 12500000 | 2019-03-11 | NULL |
| 2 | Bunga Lestari | 1 | Jakarta | 9800000 | 2020-07-01 | NULL |
| 3 | Candra Wijaya | 3 | Bandung | 8200000 | 2021-02-15 | 1 |
| 4 | Dewi Anggraini | 2 | Jakarta | 7500000 | 2022-05-09 | 6 |
| 5 | Eko Saputra | 1 | Jakarta | 6900000 | 2023-01-16 | 2 |
| 6 | Fajar Nugroho | 2 | Surabaya | 11000000 | 2018-09-03 | NULL |
| 7 | Gita Permata | 3 | Jakarta | 8200000 | 2023-08-21 | 1 |
| 8 | Hendra Gunawan | NULL | Medan | 5500000 | 2024-04-02 | NULL |
SELECT '2026' AS teks,
CAST('2026' AS INTEGER) + 1 AS angka;
Hasil 1 baris
| teks | angka |
|---|---|
| 2026 | 2027 |
Teks "2026" diubah jadi angka sehingga bisa dijumlah.
Cara kerjanya, langkah demi langkah
- Kolom teks berisi "2026" dalam bentuk teks.
CAST('2026' AS INTEGER): teks itu diubah menjadi angka 2026.+ 1: karena sudah menjadi angka, nilainya bisa dijumlahkan, hasilnya 2027.
Dipakai untuk apa di kantor?
- Mengubah kolom harga yang tersimpan sebagai teks supaya bisa dijumlahkan.
- Mengubah teks tanggal menjadi tipe DATE supaya bisa dihitung selisihnya.
- Mengubah angka menjadi teks untuk disambung dengan
CONCAT.
Kesalahan yang sering terjadi
- Mengubah teks yang bukan angka, misalnya "Rp10.000". Database bisa error atau menghasilkan 0. Bersihkan dulu dengan
REPLACE.
EXTRACT