Megosztás a következőn keresztül:


CONCAT_WS (Transact-SQL)

A következőkre vonatkozik: SQL Server 2017 (14.x) és újabb Azure SQL DatabaseFelügyelt Azure SQL-példányAzure Synapse AnalyticsSQL Analytics-végpont a Microsoft FabricWarehouse-ban a Microsoft Fabric

Ez a függvény egy sztringet ad vissza, amely két vagy több sztringérték összefűzésével vagy összefűzésével végződik. Elválasztja az összefűzött sztringértékeket az első függvényargumentumban megadott elválasztóval. (CONCAT_WS azt jelzi, elválasztóval összefűzve.)

Szintaxis

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

Érvek

elválasztó

Bármilyen típusú kifejezés (karakter, nchar, nvarcharvagy varchar).

argumentum1, argumentum2 [ , argumentumN ]

Bármely sztringérték kifejezése. A CONCAT_WS függvényhez legalább két argumentum, legfeljebb 254 argumentum szükséges.

Visszatérési típusok

Olyan sztringérték, amelynek hossza és típusa a bemenettől függ.

Megjegyzések

CONCAT_WS változó számú sztringargumentumot vesz fel, és egyetlen sztringbe fűzi (vagy összekapcsolja) őket. Elválasztja az összefűzött sztringértékeket az első függvényargumentumban megadott elválasztóval. CONCAT_WS elválasztó argumentumot és legalább két másik sztringértékargumentumot igényel; ellenkező esetben CONCAT_WS hibát jelez. CONCAT_WS az összes argumentumot implicit módon sztringtípusokká alakítja az összefűzés előtt.

A sztringekre való implicit átalakítás az adattípus-átalakításokra vonatkozó meglévő szabályokat követi. További információ a viselkedésről és az adattípus-átalakításokról: CONCAT (Transact-SQL).

NULL értékek kezelése

CONCAT_WS figyelmen kívül hagyja a SET CONCAT_NULL_YIELDS_NULL { ON | OFF } beállítást.

Ha CONCAT_WS az összes NULL értékkel rendelkező argumentumokat kap, akkor üres varchar(1) típusú sztringet ad vissza.

CONCAT_WS az összefűzés során figyelmen kívül hagyja a null értékeket, és nem adja hozzá az elválasztót a null értékek közé. Ezért CONCAT_WS képes tisztán kezelni az olyan sztringek összefűződését, amelyek "üres" értékeket tartalmazhatnak – például egy második címmezőt. További információ: B példa.

Ha egy forgatókönyv null értékeket tartalmaz elválasztóval elválasztva, vegye figyelembe az ISULL függvényt. További információ: C példa.

Példák

Egy. Értékek összefűzése elválasztóval

Ez a példa három oszlopot fűz össze a sys.databases táblából, és elválasztja az értékeket szóközökkel (-) körülvett kötőjellel.

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

Itt van az eredményhalmaz.

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

B. NULL értékek kihagyása

Ez a példa figyelmen kívül hagyja NULL argumentumlistában szereplő értékeket, és vesszőelválasztó értéket (,) használ.

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

Itt van az eredményhalmaz.

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

C. CSV formátumú adatok létrehozása a táblából

Ez a példa egy vesszőelválasztó értéket (,) használ, és hozzáadja a kocsivissza karaktert CHAR(13) az eredményhalmaz vesszővel tagolt értékformátumában.

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

Itt van az eredményhalmaz.

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

CONCAT_WS figyelmen kívül hagyja az oszlopok NULL értékeit. Tördelje be a null értékű oszlopot a ISNULL függvénnyel, és adjon meg egy alapértelmezett értéket. Például:

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