CONCAT_WS (Transact-SQL)
van toepassing op: SQL Server 2017 (14.x) en hoger
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL Analytics-eindpunt in Microsoft Fabric
Warehouse in Microsoft Fabric
Deze functie retourneert een tekenreeks die het resultaat is van de samenvoeging of het samenvoegen van twee of meer tekenreekswaarden op een end-to-end-manier. Deze samengevoegde tekenreekswaarden worden gescheiden door het scheidingsteken dat is opgegeven in het eerste functieargument. (CONCAT_WS
geeft aan samenvoegen met scheidingsteken.)
Syntaxis
CONCAT_WS ( separator , argument1 , argument2 [ , argumentN ] ... )
Argumenten
scheidingsteken
Een expressie van elk tekentype (teken, nchar, nvarcharof varchar).
argument1, argument2 [ argumentN ]
Een expressie van een tekenreekswaarde. De functie CONCAT_WS
vereist ten minste twee argumenten en niet meer dan 254 argumenten.
Retourtypen
Een tekenreekswaarde waarvan de lengte en het type afhankelijk zijn van de invoer.
Opmerkingen
CONCAT_WS
neemt een variabel aantal tekenreeksargumenten en voegt deze samen (of voegt ze samen) in één tekenreeks. Deze samengevoegde tekenreekswaarden worden gescheiden door het scheidingsteken dat is opgegeven in het eerste functieargument.
CONCAT_WS
vereist een scheidingsteken en minimaal twee andere argumenten voor tekenreekswaarden; anders genereert CONCAT_WS
een fout.
CONCAT_WS
converteert impliciet alle argumenten naar tekenreekstypen voordat deze worden samengevoegd.
De impliciete conversie naar tekenreeksen volgt de bestaande regels voor conversies van gegevenstypen. Zie CONCAT (Transact-SQL)voor meer informatie over gedrag en conversie van gegevenstypen.
Behandeling van NULL-waarden
CONCAT_WS
negeert de instelling voor SET CONCAT_NULL_YIELDS_NULL { ON | OFF }
.
Als CONCAT_WS
argumenten ontvangt met alle NULL
waarden, wordt een lege tekenreeks van het type varchar(1)geretourneerd.
CONCAT_WS
negeert null-waarden tijdens het samenvoegen en voegt het scheidingsteken tussen null-waarden niet toe. Daarom kan CONCAT_WS
de samenvoeging van tekenreeksen die mogelijk 'lege' waarden bevatten, bijvoorbeeld een tweede adresveld, afhandelen. Zie voorbeeld Bvoor meer informatie.
Als een scenario null-waarden omvat, gescheiden door een scheidingsteken, kunt u de functie ISNULL overwegen. Zie Voorbeeld Cvoor meer informatie.
Voorbeelden
Een. Waarden samenvoegen met scheidingsteken
In dit voorbeeld worden drie kolommen uit de sys.databases
tabel samengevoegd, waarbij de waarden worden gescheiden door een afbreekstreepje tussen spaties (-
).
SELECT CONCAT_WS(' - ', database_id, recovery_model_desc, containment_desc) AS DatabaseInfo
FROM sys.databases;
Dit is de resultatenset.
DatabaseInfo
-----------------
1 - SIMPLE - NONE
2 - SIMPLE - NONE
3 - FULL - NONE
4 - SIMPLE - NONE
B. NULL-waarden overslaan
In dit voorbeeld worden NULL
waarden in de argumentenlijst genegeerd en wordt een kommascheidingstekenwaarde (,
) gebruikt.
SELECT CONCAT_WS(',', '1 Microsoft Way', NULL, NULL, 'Redmond', 'WA', 98052) AS Address;
Dit is de resultatenset.
Address
--------------------------------
1 Microsoft Way,Redmond,WA,98052
C. Csv-opgemaakte gegevens genereren uit een tabel
In dit voorbeeld wordt een kommascheidingsteken (,
) gebruikt en wordt het regelterugloopteken CHAR(13)
toegevoegd in de door komma's gescheiden waardenindeling van de resultatenset.
SELECT STRING_AGG(
CONCAT_WS(',', database_id, recovery_model_desc, containment_desc), CHAR(13)
) AS DatabaseInfo
FROM sys.databases;
Dit is de resultatenset.
DatabaseInfo
-------------
1,SIMPLE,NONE
2,SIMPLE,NONE
3,FULL,NONE
4,SIMPLE,NONE
CONCAT_WS
worden NULL
waarden in de kolommen genegeerd. Wrap a nullable column with the ISNULL
function, and provide a default value. Bijvoorbeeld:
SELECT STRING_AGG(
CONCAT_WS(',', database_id, ISNULL(recovery_model_desc, ''), ISNULL(containment_desc, 'N/A')), CHAR(13)
) AS DatabaseInfo
FROM sys.databases;