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 (char
, nchar
, nvarchar
, 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.