Bagikan melalui


CONCAT_WS (T-SQL)

Berlaku untuk: SQL Server 2017 (14.x) dan yang lebih baru Azure SQL DatabaseAzure SQL Managed InstanceTitik akhir analitik Azure Synapse AnalyticsSQL di Microsoft FabricWarehouse 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.)

Sintaksis

CONCAT_WS ( separator , argument1 , argument2 [ , argumentN ] ... )

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.

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_WSSET 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 adalah hasil yang ditetapkan.

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 adalah hasil yang ditetapkan.

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 adalah hasil yang ditetapkan.

DatabaseInfo
-------------
1,SIMPLE,NONE
2,SIMPLE,NONE
3,FULL,NONE
4,SIMPLE,NONE

CONCAT_WSNULL 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;