Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

CONVERT() vs TRY_CONVERT di SQL Server:Apa Bedanya?

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara melihat log transaksi di SQL Server 2008

  2. Menavigasi Log Kesalahan SQL Server

  3. Tambahkan kolom dengan nilai default ke tabel yang ada di SQL Server

  4. Jenis Kursor SQL Server - Hanya Meneruskan Kursor Dinamis | Tutorial SQL Server / Tutorial TSQL

  5. Pisahkan nilai pada beberapa baris