CONCAT_WS (SQL Bertransaksi)

Berlaku untuk:yes SQL Server 2017 (14.x) dan yang lebih baru YesAzure SQL Database YesAzure SQL Managed Instance yesAzure 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)