Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för: SQL Server 2017 (14.x) och senare versioner
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse AnalyticsSQL Analytics-slutpunkt
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;