Aracılığıyla paylaş


CONCAT_WS (Transact-SQL)

Şunlar için geçerlidir: SQL Server 2017 (14.x) ve sonraki sürümler Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL analytics endpoint in Microsoft FabricWarehouse SQL databasein Microsoft Fabric

Bu işlev, iki veya daha fazla dize değerinin uçtan uca bir şekilde birleştirilmesinden veya birleştirilmesinden kaynaklanan bir dize döndürür. Bu birleştirilmiş dize değerlerini ilk işlev bağımsız değişkeninde belirtilen sınırlayıcıyla ayırır. (CONCAT_WSayırıcı ile birleştirmeyi gösterir.)

Sözdizimi

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

Arguments

ayırıcı

Herhangi bir karakter türünün ifadesi (char, nchar, nvarchar veya varchar).

argüman1, argüman2 [ , argümanN ]

Herhangi bir dize değerinin ifadesi. CONCAT_WS işlevi en az iki bağımsız değişken gerektirir ve en fazla 254 bağımsız değişken gerektirir.

Dönüş türleri

Uzunluğu ve türü girişe bağlı olan bir dize değeri.

Açıklamalar

CONCAT_WS değişken sayıda dize bağımsız değişkeni alır ve bunları tek bir dizede birleştirir (veya birleştirir). Bu birleştirilmiş dize değerlerini ilk işlev bağımsız değişkeninde belirtilen sınırlayıcıyla ayırır. CONCAT_WS bir ayırıcı bağımsız değişken ve en az iki diğer dize değeri bağımsız değişkeni gerektirir; aksi takdirde, CONCAT_WS bir hata oluşturur. CONCAT_WS birleştirmeden önce tüm bağımsız değişkenleri örtük olarak dize türlerine dönüştürür.

Dizelere örtük dönüştürme, veri türü dönüştürmeleri için mevcut kurallara uyar. Davranış ve veri türü dönüştürmeleri hakkında daha fazla bilgi için bkz. ARALIKBİRLEŞTRİ (Transact-SQL).

NULL değerlerin işlenmesi

CONCAT_WS SET CONCAT_NULL_YIELDS_NULL { ON | OFF } ayarı yoksayar.

Tüm CONCAT_WS değerlere sahip bağımsız değişkenler alırsa NULL, varchar(1) türünde boş bir dize döndürür.

CONCAT_WS birleştirme sırasında null değerleri yoksayar ve null değerler arasına ayırıcı eklemez. Bu nedenle, CONCAT_WS "boş" değerlere (örneğin, ikinci bir adres alanı) sahip olabilecek dizelerin birleştirmesini temiz bir şekilde işleyebilir. Daha fazla bilgi için bkz. Örnek B.

Bir senaryoda sınırlayıcıyla ayrılmış null değerler varsa , ISNULL işlevini göz önünde bulundurun. Daha fazla bilgi için bkz . Örnek C.

Örnekler

A. Değerleri ayırıcı ile birleştirme

Bu örnek, tablodaki sys.databases üç sütunu birleştirir ve değerleri boşluklarla (- ) çevrelenmiş bir kısa çizgiyle ayırır.

SELECT CONCAT_WS(' - ', database_id, recovery_model_desc, containment_desc) AS DatabaseInfo
FROM sys.databases;

Sonuç kümesi aşağıdadır.

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

B. NULL değerlerini atla

Bu örnek, bağımsız değişkenler listesindeki değerleri yoksayar NULL ve virgül ayırıcı değeri (, ) kullanır.

SELECT CONCAT_WS(',', '1 Microsoft Way', NULL, NULL, 'Redmond', 'WA', 98052) AS Address;

Sonuç kümesi aşağıdadır.

Address
--------------------------------
1 Microsoft Way,Redmond,WA,98052

C. Tablodan CSV biçimli veri oluşturma

Bu örnekte virgül ayırıcı değeri (), kullanılır ve satır başı karakteri CHAR(13) , sonuç kümesinin virgülle ayrılmış değerler biçiminde eklenir.

SELECT STRING_AGG(
    CONCAT_WS(',', database_id, recovery_model_desc, containment_desc), CHAR(13)
) AS DatabaseInfo
FROM sys.databases;

Sonuç kümesi aşağıdadır.

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

CONCAT_WS NULL sütunlardaki değerleri yoksayar. null atanabilir bir sütunu işleviyle sarmalar ISNULL ve varsayılan bir değer sağlar. Örneğin:

SELECT STRING_AGG(
    CONCAT_WS(',', database_id, ISNULL(recovery_model_desc, ''), ISNULL(containment_desc, 'N/A')), CHAR(13)
) AS DatabaseInfo
FROM sys.databases;