Di SQL Server, PARSE()
dan TRY_PARSE()
fungsi yang digunakan untuk menerjemahkan nilai ke tipe data lain. Mereka pada dasarnya melakukan hal yang sama, dengan satu pengecualian; bagaimana mereka menangani kesalahan.
Jika PARSE()
gagal saat mencoba mengurai ke tipe data yang berbeda, itu akan mengembalikan kesalahan. Jika TRY_PARSE()
gagal, itu akan mengembalikan NULL
.
Contoh 1 – Pertama, Kesamaan
Berikut adalah contoh yang menunjukkan bagaimana kedua fungsi mengembalikan hasil yang sama ketika mereka berhasil mengurai nilai ke tipe data yang diperlukan:
SELECT PARSE('Fri, 8 June 2018' AS date) AS PARSE, PARSE('Fri, 8 June 2018' AS date) AS TRY_PARSE;
Hasil:
+------------+-------------+ | PARSE | TRY_PARSE | |------------+-------------| | 2018-06-08 | 2018-06-08 | +------------+-------------+
Seperti yang diharapkan, keduanya memberikan hasil yang sama persis.
Tapi mari kita lihat apa yang terjadi ketika mereka tidak dapat mengurai nilai ke tipe data yang diperlukan.
Contoh 2 – Ketika PARSE() Gagal
Berikut adalah contoh yang terjadi saat PARSE()
tidak dapat mengurai nilai ke nilai lain:
SELECT PARSE('Next year' AS date) AS Result;
Hasil:
Error converting string value 'Next year' into data type date using culture ''.
Operasi gagal karena saya tidak memberikan representasi yang valid dari tipe data yang diminta. Dengan kata lain, PARSE()
tidak dapat mengonversi Next year
menjadi tanggal tipe data seperti yang diminta.
Contoh 3 – Ketika TRY_PARSE() Gagal
Berikut ini contoh saat kami mencoba mengurai nilai yang sama dengan TRY_PARSE()
:
SELECT TRY_PARSE('Next year' AS date) AS Result;
Hasil:
+----------+ | Result | |----------| | NULL | +----------+
Penguraian masih gagal, tetapi mengembalikan NULL
bukannya error.
Contoh 4 – Menggunakan TRY_PARSE() dengan Pernyataan Bersyarat
Kita dapat mengambil TRY_PARSE()
dan menguji nilai pengembaliannya. Jika itu adalah nilai NULL, kami dapat mengembalikan satu hal, jika itu bukan nilai NULL, kami dapat mengembalikan yang lain:
SELECT CASE WHEN TRY_PARSE('Next year' AS date) IS NULL THEN 'Conversion failed' ELSE 'Conversion succeeded' END AS Result;
Hasil:
+-------------------+ | Result | |-------------------| | Conversion failed | +-------------------+
Contoh 5 – TRY_PARSE() Dengan Kesalahan
Hanya karena TRY_PARSE()
tidak menghasilkan kesalahan pada contoh di atas, bukan berarti tidak pernah menghasilkan kesalahan. Ada kalanya Anda masih bisa mendapatkan kesalahan saat menggunakan fungsi ini.
Misalnya, Anda akan mendapatkan kesalahan jika Anda memberikan nilai yang tidak valid sebagai culture
argumen:
SELECT TRY_PARSE('Next year' AS date USING 'Mars') AS Result;
Hasil:
The culture parameter 'Mars' provided in the function call is not supported.
Beberapa Catatan tentang Fungsi ini
Berikut adalah beberapa poin yang Microsoft katakan tentang fungsi-fungsi ini:
- Sebaiknya Anda menggunakan
PARSE()
danTRY_PARSE()
hanya untuk mengonversi dari string ke tipe tanggal/waktu dan angka. Untuk tipe data lainnya, gunakanCAST()
atauCONVERT()
. - Fungsi ini bergantung pada keberadaan .NET Framework Common Language Runtime (CLR).
- Ada overhead kinerja tertentu dalam mengurai nilai string.
- Fungsi ini tidak akan diremote karena bergantung pada keberadaan CLR. Mencoba melakukan remote fungsi yang memerlukan CLR akan menyebabkan kesalahan pada server jarak jauh.