CONCAT_WS (Transact-SQL)
A következőkre vonatkozik: SQL Server 2017 (14.x) és újabb
Azure SQL Database
Felügyelt Azure SQL-példány
Azure Synapse Analytics
SQL Analytics-végpont a Microsoft Fabric
Warehouse-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;