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

Cara Menambahkan Pemisah ke String Gabungan di SQL Server – CONCAT_WS()

Di SQL Server dan Azure, jika Anda perlu menggabungkan dua atau lebih string, Anda dapat menggunakan T-SQL CONCAT() fungsi. Seperti halnya operasi penggabungan dasar, fungsi ini menggabungkan string bersama-sama, ujung ke ujung.

Tetapi bagaimana jika Anda perlu menambahkan pemisah di antara setiap string?

Misalnya, Anda mungkin ingin membuat daftar string yang dipisahkan koma. Dalam hal ini, Anda ingin menyisipkan koma di antara setiap string. Seperti ini:

Paris, France

Alih-alih ini:

ParisFrance

Untungnya, T-SQL menyediakan CONCAT_WS() fungsi yang membantu Anda melakukan hal itu. CONCAT_WS() fungsi bekerja seperti CONCAT() fungsi, kecuali bahwa dibutuhkan argumen tambahan – pemisah yang ingin Anda gunakan.

Ini contohnya:

SELECT CONCAT_WS(',','Paris', 'France') AS Location;

Hasil:

Location    
------------
Paris,France

Dan Anda dapat menambahkan spasi di sana jika Anda mau:

SELECT CONCAT_WS(', ','Paris', 'France') AS Location;

Hasil:

Location     
-------------
Paris, France

Pemisah

Tidak ada yang mengatakan bahwa pemisah harus berupa koma. Pemisah dapat berupa ekspresi dari semua jenis karakter (charncharnvarchar , atau varchar ).

Ini contoh yang sama dengan yang sebelumnya, kecuali yang ini menggunakan pemisah yang berbeda.

SELECT CONCAT_WS(' - ','Paris', 'France') AS Location;

Hasil:

Location      
--------------
Paris - France

Contoh Basis Data

Berikut adalah contoh mengambil data dari database, dan menggabungkan dua kolom menjadi satu, dipisahkan dengan koma:

SELECT CONCAT_WS(', ', city.Name, country.Name ) AS Location
FROM city
INNER JOIN country ON
city.CountryCode = country.Code
WHERE country.Code = 'THA';

Hasil:

Location                   
---------------------------
Bangkok, Thailand          
Nonthaburi, Thailand       
Nakhon Ratchasima, Thailand
Chiang Mai, Thailand       
Udon Thani, Thailand       
Hat Yai, Thailand          
Khon Kaen, Thailand        
Pak Kret, Thailand         
Nakhon Sawan, Thailand     
Ubon Ratchathani, Thailand 
Songkhla, Thailand         
Nakhon Pathom, Thailand

Nilai NULL

Jika salah satu argumennya adalah NULL nilai, SQL Server akan melewatkan nilai itu dan pemisahnya, tetapi masih akan memproses yang lain.

Contoh:

SELECT CONCAT_WS(', ','Paris', NULL, 'France') AS Location;

Hasil:

Location     
-------------
Paris, France

Pemisah Nilai NULL

Jika pemisah itu sendiri adalah NULL nilai, operasi penggabungan akan tetap dilakukan, tetapi tanpa pemisah.

Contoh:

SELECT CONCAT_WS(NULL,'Paris', NULL, 'France') AS Location;

Hasil:

Location   
-----------
ParisFrance

Ini adalah salah satu perbedaan antara T-SQL dan MySQL (MySQL juga memiliki CONCAT_WS() fungsi). Di MySQL, jika pemisahnya adalah NULL nilai, rangkaian menghasilkan NULL nilai.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengembalikan Daftar Email yang Dikirim dari SQL Server Database Mail (T-SQL)

  2. @@DATEFIRST – Dapatkan Hari Pertama Minggu ini di SQL Server

  3. Pernyataan CASE WHEN untuk klausa ORDER BY

  4. Apakah mungkin menggunakan SqlGeography dengan Linq to Sql?

  5. Cara mengembalikan hanya Tanggal dari tipe data DateTime SQL Server