Dalam SQL Server, fungsi yang sering digunakan adalah CAST()
, yang mengonversi ekspresi dari satu tipe data ke tipe data lainnya. Tetapi jika pemeran tidak berhasil, maka itu akan mengembalikan kesalahan.
Masukkan TRY_CAST()
.
TRY_CAST()
fungsi tidak mengembalikan kesalahan jika pemeran gagal. Sebagai gantinya, ia mengembalikan NULL
.
Namun ada beberapa kesempatan, di mana itu akan mengembalikan kesalahan.
Sintaks
Sintaksnya seperti ini:
TRY_CAST ( expression AS data_type [ ( length ) ] )
Dimana expression
adalah ekspresi yang akan dikonversi, data_type
adalah tipe data baru, dan length
adalah panjang opsional untuk tipe data baru.
Contoh 1 – Cast Berhasil
Berikut adalah contoh casting string sebagai decimal
:
SELECT TRY_CAST('007' AS DECIMAL(5,2));
Hasil:
7.00
Dalam hal ini, para pemeran berhasil.
Contoh 2 – Cast Gagal dan Mengembalikan NULL
Berikut ini contoh pemeran yang gagal dan NULL
dikembalikan:
SELECT TRY_CAST('Double Oh Seven!' AS DECIMAL(5,2));
Hasil:
NULL
Pemeran gagal, jadi NULL
dikembalikan.
Sebagai perbandingan, inilah yang terjadi ketika kita menggunakan CAST()
bukannya TRY_CAST()
:
SELECT CAST('Double Oh Seven!' AS DECIMAL(5,2));
Hasil:
Msg 8114, Level 16, State 5, Line 1 Error converting data type varchar to numeric.
Contoh 3 – Cast Gagal dan Mengembalikan Error
Ada beberapa kesempatan di mana TRY_CAST()
akan mengembalikan kesalahan.
Jika pemeran secara eksplisit tidak diizinkan, maka ia mengembalikan kesalahan:
SELECT TRY_CAST(10 AS xml);
Hasil:
Msg 529, Level 16, State 2, Line 1 Explicit conversion from data type int to xml is not allowed.
Informasi Lebih Lanjut
Lihat Bagaimana CAST()
Bekerja di SQL Server untuk contoh konversi lainnya, dan CAST()
vs TRY_CAST()
di SQL Server untuk perbandingan antara CAST()
dan TRY_CAST()
.
Lihat dokumentasi Microsoft untuk CAST()
dan CONVERT()
untuk informasi lebih detail (sebagian besar juga berlaku untuk TRY_CAST()
).