Jika Anda mendapatkan kesalahan SQL Server Msg 8114 yang berbunyi seperti Kesalahan saat mengubah tipe data varchar menjadi numerik , mungkin karena Anda mencoba melakukan konversi tipe data yang gagal karena nilainya tidak dapat dikonversi ke tipe tujuan.
Itu bukan karena Anda tidak dapat mengonversi tipe itu ke tipe baru. Itu karena nilai itu sendiri.
Contoh Kesalahan
Berikut contoh kode yang menghasilkan kesalahan:
SELECT CAST('Ten' AS DECIMAL(5,2));
Hasil:
Msg 8114, Level 16, State 5, Line 1 Error converting data type varchar to numeric.
Kesalahan ini terjadi karena SQL Server tidak dapat mengonversi nilai string ke desimal.
Solusi 1
Untuk memperbaikinya, Anda harus memastikan bahwa Anda memberikan nilai yang dapat dikonversi oleh SQL Server.
Jika Anda melewati kolom, periksa apakah Anda memiliki kolom yang benar. Sama jika Anda meneruskan variabel – periksa apakah itu variabel yang benar.
Ingatlah bahwa ini mungkin tidak terjadi dalam semua kasus mencoba mengonversi string ke desimal, karena beberapa nilai string dapat dikonversi.
Misalnya, konversi berikut berhasil:
SELECT CAST('10' AS DECIMAL(5,2));
Hasil:
10.00
Di sini, SQL Server berhasil menemukan 10
adalah angka, dan oleh karena itu konversi berhasil.
Solusi 2
Jika Anda tidak keberatan konversi gagal, tetapi Anda hanya tidak ingin itu mengembalikan kesalahan, coba TRY_CAST()
atau TRY_CONVERT()
fungsi.
Alih-alih mengembalikan kesalahan, fungsi ini mengembalikan NULL
ketika nilainya tidak dapat dikonversi.
Contoh:
SELECT TRY_CAST('Ten' AS DECIMAL(5,2));
Hasil:
NULL