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

6 Cara Menggabungkan String dan Angka di SQL Server

Jika Anda pernah mencoba menggabungkan string dengan angka saat menggunakan SQL Server, tetapi menerima kesalahan, artikel ini akan menjelaskan semuanya untuk Anda. Ada lebih dari satu cara untuk melakukan penggabungan menggunakan T-SQL di SQL Server, dan jika Anda menggabungkan tipe data yang berbeda (seperti string dan angka), Anda mungkin menerima kesalahan, tergantung pada cara Anda melakukan penggabungan.

Hal yang perlu diingat ketika menggabungkan tipe data yang berbeda adalah bahwa mereka harus dikonversi ke tipe data yang sama terlebih dahulu. Lebih khusus lagi, saat menggabungkan string dengan angka, nomor tersebut perlu diubah menjadi string sebelum dapat digabungkan dengan string. Untungnya SQL Server/T-SQL membuat ini mudah.

Artikel ini menyajikan enam cara untuk menggabungkan string dengan angka menggunakan T-SQL.

Fungsi CONCAT()

Cara yang paling jelas (dan mungkin yang terbaik) untuk menggabungkan string dan angka adalah dengan menggunakan CONCAT() fungsi. Ini memungkinkan Anda untuk memberikan string dan nomor sebagai dua argumen terpisah. SQL Server kemudian akan menggabungkannya, dan penggabungan Anda selesai.

Contoh

SELECT CONCAT('Comments: ', 9) AS Result;

Hasil:

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

Seperti yang Anda lihat, ini bekerja dengan sempurna. String dan nomor disajikan sebagai satu bidang.

Perhatikan bahwa Anda tidak terbatas hanya pada satu string dan satu angka – CONCAT() fungsi dapat menerima hingga 254 argumen (yaitu Anda dapat menggabungkan hingga 254 string/angka bersama-sama.

Perhatikan juga bahwa CONCAT() secara implisit mengonversi semua argumen ke tipe string sebelum penggabungan. Juga, CONCAT() secara implisit mengonversi nilai nol apa pun menjadi string kosong.

Fungsi CONCAT_WS()

Kita dapat mengambil contoh sebelumnya selangkah lebih maju dengan menggunakan CONCAT_WS() fungsi. Fungsi ini memungkinkan Anda untuk menentukan pemisah.

Untuk memberikan pemisah, cukup tambahkan itu sebagai argumen pertama. Kemudian tentukan string dan nomor sebagai argumen kedua dan ketiga.

SELECT CONCAT_WS(': ', 'Comments', 9) AS Result;

Hasil:

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

Perhatikan bahwa fungsi ini tidak selalu cocok untuk memisahkan pasangan nama/nilai, karena pemisah ditambahkan di antara setiap item individual yang digabungkan (sehingga juga akan ditambahkan di antara setiap pasangan jika Anda memiliki banyak pasangan). Dalam kasus kami ini berfungsi dengan baik, karena kami hanya memiliki satu pasangan nama/nilai untuk digabungkan.

Namun, Anda selalu dapat menyarangkan beberapa CONCAT_WS() berfungsi untuk mengembalikan rangkaian yang benar untuk kebutuhan Anda (sehingga Anda dapat memiliki pemisah yang berbeda di antara setiap pasangan).

Fungsi CONVERT()

Jika karena alasan tertentu Anda tidak dapat (atau tidak ingin) menggunakan CONCAT() atau CONCAT_WS() fungsi, Anda dapat melakukan penggabungan menggunakan operator penggabungan string (+ ). Saat menggunakan metode ini, Anda harus melakukan konversi tipe data apa pun secara manual.

Salah satu cara untuk mengonversi antar tipe data adalah dengan menggunakan CONVERT() fungsi.

Inilah cara Anda melakukannya menggunakan data yang sama dari contoh sebelumnya:

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

Hasil:

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

Dalam hal ini saya mengonversi bilangan bulat menjadi varchar(12), tetapi ini dapat berupa tipe data dan panjang apa pun yang Anda butuhkan.

Fungsi CAST()

CAST() fungsinya sangat mirip dengan CONVERT() fungsi. Perbedaan utamanya adalah CAST() adalah ANSI standar dan CONVERT() khusus untuk T-SQL. Karena itu, CONVERT() memang memiliki beberapa fungsi tambahan, tetapi untuk tujuan contoh ini, Anda dapat menggunakan salah satunya.

Berikut CAST() versi menggunakan data yang sama dari contoh sebelumnya:

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

Hasil:

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

Fungsi TRY_CONVERT()

Satu masalah potensial saat menggunakan CONVERT() fungsinya adalah, jika konversi tidak berhasil, Anda akan mendapatkan kesalahan. Meskipun ini baik-baik saja dalam banyak kasus, dalam beberapa kasus ini mungkin tidak diinginkan. Dalam kasus seperti itu, Anda mungkin menemukan TRY_CONVERT() lebih cocok.

TRY_CONVERT() fungsi mengonversi tipe data seperti CONVERT() fungsi tidak. Namun, jika data tidak dapat dikonversi, maka akan mengembalikan null .

Misalnya, jika kami mencoba melakukan hal berikut, kami mendapatkan kesalahan:

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

Hasil:

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

Namun, jika kita menggunakan TRY_CONVERT() , kita mendapatkan null :

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

Hasil:

Result
------
null

Anda dapat menggunakan pemrograman bersyarat dalam hal ini untuk melakukan tugas yang berbeda tergantung pada hasilnya.

Fungsi TRY_CAST()

 TRY_CAST() fungsi bekerja dengan cara yang sama. Ini mengubah tipe data seperti CAST() berfungsi, dan, jika data tidak dapat dikonversi, maka akan mengembalikan null .

Misalnya, ini memunculkan kesalahan:

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

Hasil:

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

Tetapi jika kita menggunakan TRY_CAST() sebagai gantinya, kita mendapatkan null :

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

Hasil:

Result
------
null

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. DATENAME() Contoh di SQL Server

  2. Batas pada kondisi WHERE col IN (...)

  3. Jalankan sp_msforeachdb dalam aplikasi Java

  4. Mengapa menggunakan kunci utama bukan nol di TSQL?

  5. 5 tip cepat yang berguna untuk SQL Server Production DBAs