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

Cara Menggabungkan String dan Nilai NULL di SQL Server

Masalah:

Anda ingin menggabungkan NULL dengan nilai string dari kolom berbeda di SQL Server.

Contoh:

Basis data kami memiliki tabel bernama children dengan data di kolom berikut:id (kunci utama), nama_depan , nama_tengah , dan nama_belakang .

id nama_depan nama_tengah nama_belakang
1 Linda NULL Jackson
2 Maria Alice Thomson
3 NULL Steven NULL
4 NULL NULL Coklat

Kami ingin menampilkan nama depan dari satu kolom, nama tengah dari kolom berikutnya, dan nama belakang dari kolom terakhir sebagai satu string, bahkan jika salah satu kolom menyimpan NULL.

Solusi 2:

Kami akan menggunakan CONCAT() fungsi. Inilah kueri yang akan Anda tulis:

SELECT 
  CONCAT(first_name,  middle_name, last_name) AS name
FROM children;

Ini hasilnya:

nama
LindaJackson
MaryAliceThomson
Steven
Coklat

Diskusi:

Gunakan CONCAT() fungsi untuk menggabungkan nilai string dari ekspresi atau kolom yang berisi NULL. Fungsi ini mengambil daftar string (atau NULL) dan menampilkan semua nilai ini dalam satu string. Tidak ada pemisah antara nilai, sehingga hasilnya (seperti dalam contoh kami) mungkin tidak diformat seperti yang Anda harapkan. Bagaimana kita bisa memperbaiki ini? Lihat CONCAT() lainnya permintaan:

Solusi 2:

Berikut opsi kueri lainnya:

SELECT 
  CONCAT(first_name,' ' , middle_name, ' ',last_name) AS name
FROM children;

Ini hasilnya:

nama
Linda Jackson
Mary Alice Thomson
Steven
Coklat

Sekarang, selain dari nilai string, fungsi ini juga mengambil beberapa spasi (ditempatkan di antara nilai gabungan). Ini memisahkan satu bagian dari nama dari yang lain. Tapi seperti yang kita lihat, solusi ini juga tidak ideal; nama lengkap tanpa nama tengah memiliki spasi tambahan, sedangkan catatan dengan hanya satu nama memiliki dua spasi tambahan.

Dalam hal ini, CONCAT_WS() fungsi adalah solusi yang lebih baik.

Solusi 3:

CONCAT_WS() function mengambil argumen pertama tambahan:karakter yang berfungsi sebagai pemisah antar string. Berikut pertanyaannya:

SELECT 
  CONCAT_WS(' ' , first_name, middle_name, last_name) AS name
FROM children;

Dan hasilnya:

nama
Linda Jackson
Mary Alice Thomson
Steven
Coklat

Kueri ini menampilkan nama lengkap anak-anak, tanpa spasi yang tidak diperlukan.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Membuat, tidak merusak, kinerja SQL Server

  2. SQL Server - Peningkatan otomatis yang memungkinkan pernyataan UPDATE

  3. Cara Membuat Batasan Pemeriksaan pada Beberapa Kolom di SQL Server - Tutorial SQL Server / TSQL Bagian 84

  4. Perbedaan waktu SQL antara dua tanggal menghasilkan jj:mm:dd

  5. Kinerja SQL Server IN vs. EXISTS