Di SQL Server, TRY_CONVERT()
fungsinya sangat mirip dengan CONVERT()
fungsi, kecuali TRY_CONVERT()
tidak mengembalikan kesalahan jika konversi gagal (CONVERT()
melakukan).
Sebagai gantinya, TRY_CONVERT()
fungsi mengembalikan NULL
jika konversi tidak berhasil.
Namun ada beberapa kesempatan, di mana TRY_CONVERT()
akan mengembalikan kesalahan.
Sintaks
Sintaksnya seperti ini:
TRY_CONVERT ( data_type [ ( length ) ], expression [, style ] )
Dimana expression
adalah ekspresi yang akan dikonversi, data_type
adalah tipe data baru, dan length
adalah panjang opsional untuk tipe data baru.
style
opsional argumen dapat digunakan untuk menentukan bagaimana fungsi harus menerjemahkan expression
argumen. Misalnya, Anda dapat menggunakan argumen ini untuk menentukan format tanggal.
Contoh 1 – Konversi Berhasil
Berikut ini contoh mengubah string menjadi desimal:
SELECT TRY_CONVERT(DECIMAL(5,2), '007');
Hasil:
7.00
Dalam hal ini, konversi berhasil.
Contoh 2 – Konversi Gagal dan Mengembalikan NULL
Berikut ini contoh konversi yang gagal dan NULL
dikembalikan:
SELECT TRY_CONVERT(DECIMAL(5,2), 'Three');
Hasil:
NULL
Konversi gagal, jadi NULL
dikembalikan.
Sebagai perbandingan, inilah yang terjadi ketika kita menggunakan CONVERT()
bukannya TRY_CONVERT()
:
SELECT CONVERT(DECIMAL(5,2), 'Three');
Hasil:
Msg 8114, Level 16, State 5, Line 1 Error converting data type varchar to numeric.
Contoh 3 – Konversi Gagal dan Mengembalikan Kesalahan
Ada beberapa kesempatan di mana TRY_CONVERT()
akan mengembalikan kesalahan.
Jika konversi secara eksplisit tidak diizinkan, maka ia mengembalikan kesalahan:
SELECT TRY_CONVERT(xml, 10);
Hasil:
Msg 529, Level 16, State 2, Line 1 Explicit conversion from data type int to xml is not allowed.
Contoh 4 – style
Argumen
Kita dapat menggunakan style
opsional argumen untuk menentukan bagaimana ekspresi harus diterjemahkan.
Contoh:
SET LANGUAGE British;
SELECT
TRY_CONVERT(date, '09/02/2030') AS "British",
TRY_CONVERT(date, '09/02/2030', 101) AS "US",
TRY_CONVERT(date, '09/02/30', 1) AS "US (short)",
TRY_CONVERT(date, '20300902', 112) AS "ISO",
TRY_CONVERT(date, '09.02.2030', 104) AS "German";
Hasil:
Changed language setting to British. +------------+------------+--------------+------------+------------+ | British | US | US (short) | ISO | German | |------------+------------+--------------+------------+------------| | 2030-02-09 | 2030-09-02 | 2030-09-02 | 2030-09-02 | 2030-02-09 | +------------+------------+--------------+------------+------------+
Di sini, saya mengatur bahasa saya ke British
, lalu jalankan TRY_CONVERT()
beberapa kali, masing-masing menggunakan style
yang berbeda argumen (kecuali yang pertama, yang menggunakan bahasa default sesi saya – Inggris).
Kita dapat melihat bahwa argumen gaya mempengaruhi bagaimana ekspresi diterjemahkan.
Informasi Lebih Lanjut
Lihat CONVERT()
di SQL Server untuk contoh konversi lainnya, dan CONVERT()
vs TRY_CONVERT()
di SQL Server untuk perbandingan antara CONVERT()
dan TRY_CONVERT()
.
Lihat dokumentasi Microsoft untuk CAST()
dan CONVERT()
untuk informasi lebih detail (sebagian besar juga berlaku untuk TRY_CONVERT()
).