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

CAST() vs TRY_CAST() di SQL Server:Apa Bedanya?

Saat mengonversi antar tipe data di SQL Server, Anda akan mengalami berbagai fungsi yang tampaknya melakukan hal yang sama. Namun, biasanya ada perbedaan antara fungsi-fungsi ini yang mungkin tidak terlihat pada pandangan pertama. Contohnya adalah perbedaan antara CAST() dan TRY_CAST() fungsi.

Artikel ini menunjukkan perbedaan antara fungsi-fungsi ini saat menggunakan SQL Server.

Perbedaan utama antara CAST() dan TRY_CAST() fungsi adalah cara mereka menangani data yang tidak dapat dikonversi.

Fungsi CAST()

CAST() fungsi mengubah ekspresi dari satu tipe data ke tipe data lainnya. Ini memungkinkan Anda untuk melakukan hal-hal seperti, menggabungkan dua nilai dari tipe data yang berbeda. Seperti ini:

SELECT 'Comments: ' + CAST(9 AS varchar(12)) AS Result;

Hasil:

Result     
-----------
Comments: 9

Ini berfungsi dengan baik ketika data dapat dikonversi. Tetapi bagaimana jika data tidak dapat dikonversi?

Dalam hal ini Anda akan mendapatkan sesuatu seperti ini:

SELECT 'Comments: ' + CAST(10.00 AS varchar(1)) AS Result;

Hasil:

Error: Arithmetic overflow error converting numeric to data type varchar.

Ini cukup adil – jika SQL Server tidak dapat mengonversi data, Anda perlu tahu!

Namun, ada cara lain untuk melakukannya.

Fungsi TRY_CAST()

 TRY_CAST() fungsi bekerja seperti CAST() kecuali jika data tidak dapat dikonversi, ia mengembalikan null (Alih-alih membuat kesalahan seperti CAST() tidak):

SELECT 'Comments: ' + TRY_CAST(10.00 AS varchar(1)) AS Result;

Hasil:

Result
------
null

Ini berguna jika Anda ingin menggunakan pemrograman bersyarat sehingga aplikasi melakukan tugas yang berbeda tergantung pada apakah data dapat dikonversi atau tidak.

Contoh:

SELECT   
    CASE WHEN TRY_CAST(10.00 AS varchar(2)) IS NULL   
    THEN 'Cast failed'  
    ELSE 'Cast succeeded'  
END AS Result;

Hasil:

Result     
-----------
Cast failed

Jenis Data Tidak Valid

 TRY_CAST() fungsi hanya bekerja dengan cara ini 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_CAST(10.00 AS Miami) AS Result;

Hasil:

Error: Type Miami 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. Forum Kinerja SQL Server Terbaik untuk Bantuan pada Pertanyaan Terberat

  2. 3 Cara Mengembalikan Semua Tabel TANPA Kunci Utama di SQL Server

  3. Cara menambahkan Batasan Kunci Utama ke Kolom Identitas ke semua tabel di Database SQL Server - Tutorial SQL Server / TSQL Bagian 63

  4. Bagaimana sys.dm_exec_describe_first_result_set Bekerja di SQL Server

  5. Gunakan NEWID() untuk Membuat Nilai Unik di SQL Server