Anda mungkin telah memperhatikan bahwa T-SQL menyertakan CONVERT()
fungsi dan TRY_CONVERT()
fungsi yang dapat Anda gunakan di SQL Server untuk melakukan konversi antar tipe data. Tetapi jika Anda bingung apa perbedaan antara kedua fungsi ini, baca terus!
Perbedaan antara CONVERT()
dan TRY_CONVERT()
adalah cara mereka menangani tipe data yang tidak dapat dikonversi. Satu melempar kesalahan, sementara yang lain mengembalikan nol. Contoh berikut menunjukkan hal ini.
Fungsi CONVERT()
Pertama, mari kita lihat apa CONVERT()
fungsi tidak. Ini mengubah satu tipe data ke tipe data lainnya. Ini contohnya:
SELECT 'Comments: ' + CONVERT(varchar(12), 9) AS Result;
Hasil:
Result ----------- Comments: 9
Dalam contoh ini, kami mengonversi int
nilai ke varchar(12)
. Dan karena nilainya dapat diubah menjadi tipe dan panjang data yang kita inginkan, ini bekerja dengan sempurna.
Namun, meskipun ini bekerja dengan sempurna saat konversi berhasil, apa yang terjadi jika gagal?
Saat Konversi Gagal → Kesalahan
Mari kita ubah sedikit kodenya dan lihat apa yang terjadi ketika konversi gagal:
SELECT 'Comments: ' + CONVERT(varchar(1), 10.00) AS Result;
Hasil:
Error: Arithmetic overflow error converting numeric to data type varchar.
Kami mendapatkan kesalahan.
Fungsi TRY_CONVERT()
TRY_CONVERT()
merupakan alternatif yang bisa kita gunakan untuk mencegah pesan error tersebut. Fungsi ini melakukan operasi konversi data yang sama seperti CONVERT()
, namun, jika fungsi ini tidak dapat melakukan konversi, akan mengembalikan null
:
SELECT 'Comments: ' + TRY_CONVERT(varchar(1), 10.00) AS Result;
Hasil:
Result ------ null
Anda dapat mengambil hasil ini dan menerapkan kode bersyarat sehingga hal yang berbeda terjadi tergantung pada apakah konversi berhasil atau tidak.
Contoh:
SELECT CASE WHEN TRY_CONVERT(varchar(1), 10.00) IS NULL THEN 'Conversion failed' ELSE 'Conversion succeeded' END AS Result;
Hasil:
Result ----------------- Conversion failed
Jenis Data Tidak Valid
Satu peringatan dengan TRY_CONVERT()
adalah cara ini hanya berfungsi saat menggunakan tipe data yang valid. Jadi, Anda akan mendapatkan kesalahan jika Anda secara eksplisit memberikan tipe data yang tidak diizinkan.
Contoh:
SELECT 'Comments: ' + TRY_CONVERT(Homer, 10.00) AS Result;
Hasil:
Error: Type Homer is not a defined system type.