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

Bagaimana TRY_CONVERT() Bekerja di SQL Server

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() ).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server:drop table cascade setara?

  2. Arsitektur SQL Server AlwaysOn (Availability Group) dan Instalasi Langkah demi Langkah -3 Manual Fail Over Steps

  3. Menghubungkan Aplikasi yang berjalan di Linux ke Amazon Relational Database Services (RDS) untuk SQL Server

  4. Di kolom apa indeks berkerumun harus diletakkan?

  5. Menjelajahi SQL Server 2016 Query Store GUI