CONCAT_WS (Transact-SQL)
gäller för: SQL Server 2017 (14.x) och senare
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL-analysslutpunkt i Microsoft Fabric
Warehouse i Microsoft Fabric
Den här funktionen returnerar en sträng som är resultatet av sammanfogningen eller sammanfogningen av två eller flera strängvärden på ett sätt från slutpunkt till slutpunkt. Den separerar de sammanfogade strängvärdena med avgränsaren som anges i det första funktionsargumentet. (CONCAT_WS
anger sammanfoga med avgränsaren.)
Syntax
CONCAT_WS ( separator , argument1 , argument2 [ , argumentN ] ... )
Argument
avgränsare
Ett uttryck av valfri teckentyp (tecken, nchar, nvarchareller varchar).
argument1, argument2 [ , argumentN ]
Ett uttryck för valfritt strängvärde. Funktionen CONCAT_WS
kräver minst två argument och högst 254 argument.
Returtyper
Ett strängvärde vars längd och typ beror på indata.
Anmärkningar
CONCAT_WS
tar ett variabelt antal strängargument och sammanfogar (eller kopplar) dem till en enda sträng. Den separerar de sammanfogade strängvärdena med avgränsaren som anges i det första funktionsargumentet.
CONCAT_WS
kräver ett avgränsarargument och minst två andra strängvärdeargument. annars uppstår ett fel CONCAT_WS
.
CONCAT_WS
konverterar implicit alla argument till strängtyper före sammanfogning.
Den implicita konverteringen till strängar följer de befintliga reglerna för datatypskonverteringar. Mer information om beteende- och datatypkonverteringar finns i CONCAT (Transact-SQL).
Behandling av NULL-värden
CONCAT_WS
ignorerar inställningen SET CONCAT_NULL_YIELDS_NULL { ON | OFF }
.
Om CONCAT_WS
tar emot argument med alla NULL
värden returneras en tom sträng av typen varchar(1).
CONCAT_WS
ignorerar null-värden under sammanfogning och lägger inte till avgränsaren mellan null-värden. Därför kan CONCAT_WS
hantera sammanfogning av strängar som kan ha "tomma" värden , till exempel ett andra adressfält. Mer information finns i Exempel B.
Om ett scenario omfattar null-värden avgränsade med en avgränsare bör du överväga funktionen ISNULL. Mer information finns i Exempel C.
Exempel
A. Sammanfoga värden med avgränsare
Det här exemplet sammanfogar tre kolumner från den sys.databases
tabellen och separerar värdena med ett bindestreck omgivet av blanksteg (-
).
SELECT CONCAT_WS(' - ', database_id, recovery_model_desc, containment_desc) AS DatabaseInfo
FROM sys.databases;
Här är resultatuppsättningen.
DatabaseInfo
-----------------
1 - SIMPLE - NONE
2 - SIMPLE - NONE
3 - FULL - NONE
4 - SIMPLE - NONE
B. Hoppa över NULL-värden
Det här exemplet ignorerar NULL
värden i argumentlistan och använder ett kommaavgränsarvärde (,
).
SELECT CONCAT_WS(',', '1 Microsoft Way', NULL, NULL, 'Redmond', 'WA', 98052) AS Address;
Här är resultatuppsättningen.
Address
--------------------------------
1 Microsoft Way,Redmond,WA,98052
C. Generera CSV-formaterade data från tabellen
Det här exemplet använder ett kommaavgränsarvärde (,
) och lägger till vagnreturtecknet CHAR(13)
i formatet kommaavgränsade värden i resultatuppsättningen.
SELECT STRING_AGG(
CONCAT_WS(',', database_id, recovery_model_desc, containment_desc), CHAR(13)
) AS DatabaseInfo
FROM sys.databases;
Här är resultatuppsättningen.
DatabaseInfo
-------------
1,SIMPLE,NONE
2,SIMPLE,NONE
3,FULL,NONE
4,SIMPLE,NONE
CONCAT_WS
ignorerar NULL
värden i kolumnerna. Omslut en nullbar kolumn med funktionen ISNULL
och ange ett standardvärde. Till exempel:
SELECT STRING_AGG(
CONCAT_WS(',', database_id, ISNULL(recovery_model_desc, ''), ISNULL(containment_desc, 'N/A')), CHAR(13)
) AS DatabaseInfo
FROM sys.databases;