CONCAT_WS (SQL Bertransaksi)
Berlaku untuk:
SQL Server 2017 (14.x) dan yang lebih baru
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Fungsi ini mengembalikan string yang dihasilkan dari perangkaian, atau gabungan, dari dua nilai string atau lebih secara end-to-end. Ini memisahkan nilai string yang digabungkan dengan pemisah yang ditentukan dalam argumen fungsi pertama. (CONCAT_WS menunjukkan menggabungkan dengan pemisah.)
Sintaks
CONCAT_WS ( separator, argument1, argument2 [, argumentN]... )
Catatan
Untuk melihat sintaks transact-SQL untuk SQL Server 2014 dan yang lebih lama, lihat Dokumentasi versi sebelumnya.
Argumen
Pemisah Ekspresi jenis karakter apa pun (char, , ncharnvarchar, atau varchar).
argumen1, argumen2, argumenN Ekspresi jenis apa pun. Fungsi ini CONCAT_WS memerlukan setidaknya dua argumen, dan tidak lebih dari 254 argumen.
Tipe yang dikembalikan
Nilai string yang panjang dan jenisnya bergantung pada input.
Keterangan
CONCAT_WS mengambil jumlah variabel argumen string dan menggabungkannya (atau menggabungkannya) menjadi satu string. Ini memisahkan nilai string yang digabungkan dengan pemisah yang ditentukan dalam argumen fungsi pertama. CONCAT_WS memerlukan argumen pemisah dan minimal dua argumen nilai string lainnya; jika tidak, CONCAT_WS akan menimbulkan kesalahan. CONCAT_WS secara implisit mengonversi semua argumen menjadi jenis string sebelum perangkaian.
Konversi implisit ke string mengikuti aturan yang ada untuk konversi jenis data. Lihat CONCAT (Transact-SQL) untuk informasi selengkapnya tentang perilaku dan konversi jenis data.
Perlakuan nilai NULL
CONCAT_WSSET CONCAT_NULL_YIELDS_NULL {ON|OFF} mengabaikan pengaturan.
Jika CONCAT_WS menerima argumen dengan semua nilai NULL, maka akan mengembalikan string kosong dari jenis varchar(1).
CONCAT_WS mengabaikan nilai null selama perangkaian, dan tidak menambahkan pemisah di antara nilai null. Oleh karena itu, CONCAT_WS dapat menangani perangkaian string dengan bersih yang mungkin memiliki nilai "kosong" - misalnya, bidang alamat kedua. Lihat contoh B untuk informasi selengkapnya.
Jika skenario melibatkan nilai null yang dipisahkan oleh pemisah, pertimbangkan fungsi .ISNULL Lihat contoh C untuk informasi selengkapnya.
Contoh
A. Menggabungkan nilai dengan pemisah
Contoh ini menggabungkan tiga kolom dari tabel sys.databases, memisahkan nilai dengan -.
SELECT CONCAT_WS( ' - ', database_id, recovery_model_desc, containment_desc) AS DatabaseInfo
FROM sys.databases;
Berikut adalah hasil yang ditetapkan.
| DatabaseInfo |
|---|
| 1 - SEDERHANA - TIDAK ADA |
| 2 - SEDERHANA - TIDAK ADA |
| 3 - PENUH - TIDAK ADA |
| 4 - SEDERHANA - TIDAK ADA |
B. Melewatkan nilai NULL
Contoh ini mengabaikan NULL nilai dalam daftar argumen.
SELECT CONCAT_WS(',','1 Microsoft Way', NULL, NULL, 'Redmond', 'WA', 98052) AS Address;
Berikut adalah hasil yang ditetapkan.
Address
------------
1 Microsoft Way,Redmond,WA,98052
C. Menghasilkan data berformat CSV dari tabel
Contoh ini menggunakan koma , sebagai nilai pemisah, dan menambahkan karakter char(13) pengembalian pengangkutan dalam format nilai yang dipisahkan kolom dari kumpulan hasil.
SELECT
STRING_AGG(CONCAT_WS( ',', database_id, recovery_model_desc, containment_desc), char(13)) AS DatabaseInfo
FROM sys.databases
Berikut adalah hasil yang ditetapkan.
DatabaseInfo
------------
1,SIMPLE,NONE
2,SIMPLE,NONE
3,FULL,NONE
4,SIMPLE,NONE
CONCAT_WS mengabaikan nilai NULL dalam kolom. Bungkus kolom nullable dengan ISNULL fungsi , dan berikan nilai default. Lihat contoh ini untuk informasi selengkapnya:
SELECT
STRING_AGG(CONCAT_WS( ',', database_id, ISNULL(recovery_model_desc,''), ISNULL(containment_desc,'N/A')), char(13)) AS DatabaseInfo
FROM sys.databases;
Lihat juga
CONCAT (SQL Bertransaksi)
FORMATMESSAGE (SQL bertransaksi)
QUOTENAME (SQL Bertransaksi)
REPLACE (Transact-SQL)
TERBALIK (SQL bertransaksi)
STRING_AGG (T-SQL)
STRING_ESCAPE (SQL Bertransaksi)
STUFF (Transact-SQL)
TERJEMAHKAN (SQL Bertransaksi)
Fungsi String (SQL Transact)