CONCAT_WS (T-SQL)
Berlaku untuk: SQL Server 2017 (14.x) dan yang lebih baru Azure SQL Database Azure SQL Managed Instance Titik akhir analitik Azure Synapse Analytics SQL di Microsoft Fabric Warehouse di Microsoft Fabric
Fungsi ini mengembalikan string yang dihasilkan dari perangkaian, atau gabungan, dari dua atau beberapa nilai string 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 ] ... )
Argumen
pemisah
Ekspresi jenis karakter apa pun (karakter, nchar, nvarchar, atau varchar).
argumen1, argumen2 [ , argumenN ]
Ekspresi nilai string apa pun. Fungsi ini CONCAT_WS
memerlukan setidaknya dua argumen, dan tidak lebih dari 254 argumen.
Jenis yang dikembalikan
Nilai string yang panjang dan jenisnya bergantung pada input.
Keterangan
CONCAT_WS
mengambil jumlah variabel argumen string dan menggabungkannya (atau menggabungkan) ke dalam 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
menimbulkan kesalahan. CONCAT_WS
secara implisit mengonversi semua argumen menjadi jenis string sebelum penggalian.
Konversi implisit ke string mengikuti aturan yang ada untuk konversi jenis data. Untuk informasi selengkapnya tentang perilaku dan konversi jenis data, lihat CONCAT (Transact-SQL).
Perlakuan nilai NULL
CONCAT_WS
SET CONCAT_NULL_YIELDS_NULL { ON | OFF }
mengabaikan pengaturan.
Jika CONCAT_WS
menerima argumen dengan semua NULL
nilai, maka akan mengembalikan string kosong 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. Untuk informasi selengkapnya, lihat Contoh B.
Jika skenario melibatkan nilai null yang dipisahkan oleh pemisah, pertimbangkan fungsi ISNULL . Untuk informasi selengkapnya, lihat Contoh C.
Contoh
J. Menggabungkan nilai dengan pemisah
Contoh ini menggabungkan tiga kolom dari sys.databases
tabel, memisahkan nilai dengan tanda hubung yang dikelilingi oleh spasi (-
).
SELECT CONCAT_WS(' - ', database_id, recovery_model_desc, containment_desc) AS DatabaseInfo
FROM sys.databases;
Berikut set hasilnya.
DatabaseInfo
-----------------
1 - SIMPLE - NONE
2 - SIMPLE - NONE
3 - FULL - NONE
4 - SIMPLE - NONE
B. Lewati nilai NULL
Contoh ini mengabaikan NULL
nilai dalam daftar argumen, dan menggunakan nilai pemisah koma (,
).
SELECT CONCAT_WS(',', '1 Microsoft Way', NULL, NULL, 'Redmond', 'WA', 98052) AS Address;
Berikut set hasilnya.
Address
--------------------------------
1 Microsoft Way,Redmond,WA,98052
C. Hasilkan data berformat CSV dari tabel
Contoh ini menggunakan nilai pemisah koma (,
), dan menambahkan karakter CHAR(13)
pengembalian pengangkutan dalam format nilai kolom yang dipisahkan dari kumpulan hasil.
SELECT STRING_AGG(CONCAT_WS(',', database_id, recovery_model_desc, containment_desc), CHAR(13)) AS DatabaseInfo
FROM sys.databases;
Berikut set hasilnya.
DatabaseInfo
-------------
1,SIMPLE,NONE
2,SIMPLE,NONE
3,FULL,NONE
4,SIMPLE,NONE
CONCAT_WS
NULL
mengabaikan nilai dalam kolom. Bungkus kolom nullable dengan ISNULL
fungsi , dan berikan nilai default. Contohnya:
SELECT STRING_AGG(
CONCAT_WS(',', database_id, ISNULL(recovery_model_desc, ''),
ISNULL(containment_desc, 'N/A')
), CHAR(13)) AS DatabaseInfo
FROM sys.databases;