JSON- en tekenreeksaggregatie
SQL Server 2025 introduceert nieuwe aggregatiefuncties voor het bouwen van JSON-matrices, JSON-objecten en tekenreeksen met scheidingstekens. Deze toevoegingen maken het eenvoudiger om gestructureerde uitvoer te genereren, zoals API-antwoorden, rapporten of logboekexports rechtstreeks vanuit T-SQL-query's. Met de nieuwe functies kunt u gegevensopmaak verplaatsen naar de databaselaag, waardoor complexe transformatie aan de clientzijde wordt verminderd.
Overzicht van JSON- en tekenreeksaggregatiefuncties
Laten we eens kijken naar de drie nieuwe aggregatiefuncties:
JSON_ARRAYAGG
Hiermee maakt u een JSON-matrix op basis van de waarden van een expressie. De waarde van elke rij wordt een element in de resulterende JSON-matrix. Het vereenvoudigt het genereren van matrices met waarden, zoals lijsten met id's of namen.
JSON_OBJECTAGG
Hiermee maakt u een JSON-object op basis van sleutel-waardeparen. Het eerste argument definieert de sleutel en de tweede definieert de waarde. Met deze waardekoppeling kunt u eenvoudig JSON-documenten rechtstreeks vanuit queryresultaten maken.
STRING_CONCAT_WS
Voegt tekenreeksen samen met een opgegeven scheidingsteken, terwijl NULL-waarden worden overgeslagen. De naam van de functie staat voor Tekenreeks CONCAT met scheidingsteken. Het biedt een efficiënte manier om waarden, zoals namen, tags of door komma's gescheiden lijsten, samen te voegen.
Operator voor tekenreekssamenvoeging ||
SQL Server 2025 introduceert de ANSI-standaardoperator || als alternatief + voor tekenreekssamenvoeging. Het biedt meer draagbare syntaxis en heeft vaak de voorkeur bij het combineren van meerdere kolommen in één tekstuitvoer.
UNISTR-functie
UNISTR() retourneert een Unicode-tekenreeks op basis van escapereeksen, zodat u tekens kunt invoegen met behulp van codepunt of escape-notatie. Het is handig bij het ontwerpen van scripts die niet-afdrukbare of meertalige tekens bevatten.
Voorbeeld 1: JSON-matrices en -objecten bouwen vanuit queryresultaten
Stel dat uw database klantordergegevens in twee tabellen opslaat, Sales.Customer en Sales.SalesOrderHeader. Het analyseteam heeft een JSON-rapport nodig waarin elke klant en de order-id's worden samengevat voor integratie met een webdashboard.
Query: JSON_ARRAYAGG en JSON_OBJECTAGG gebruiken
Met de volgende query wordt elke klant samen met een JSON-matrix van de order-id's opgehaald, verpakt in een JSON-object.
SELECT
C.CustomerID,
C.FirstName + ' ' + C.LastName AS CustomerName,
JSON_OBJECTAGG(
'Customer' : C.CustomerID,
'Orders' : JSON_ARRAYAGG(SOH.SalesOrderID)
) AS CustomerSummary
FROM Sales.Customer AS C
JOIN Sales.SalesOrderHeader AS SOH
ON C.CustomerID = SOH.CustomerID
GROUP BY C.CustomerID, C.FirstName, C.LastName;
Results
| KlantID | Klantnaam | Klantsamenvatting |
|---|---|---|
| 11001 | Jordan Patterson | {"Klant":11001,"Orders":[43722,43723,43724]} |
| 11002 | Alicia Tran | {"Klant":11002,"Bestellingen":[43725,43726]} |
| 11003 | Marco Diaz | {"Klant":11003,"Orders":[43727]} |
In dit voorbeeld JSON_ARRAYAGG verzamelt u alle order-id's voor elke klant in een JSON-matrix en JSON_OBJECTAGG verpakt u het resultaat in een JSON-object met duidelijke sleutel-waardeparen. De hele structuur wordt geproduceerd in één T-SQL-query.
Voorbeeld 2: Tekstuitvoer opmaken met behulp van STRING_CONCAT_WS
Het marketingteam heeft een lijst nodig met de aangeschafte productnamen van elke klant, gescheiden door komma's voor een e-mailcampagne. De STRING_CONCAT_WS functie kan deze resultaten op een schone manier genereren en null-waarden weglaten.
Query: Productnamen samenvoegen met een scheidingsteken
De volgende query haalt elke klant op, samen met een door komma's gescheiden lijst met producten die ze hebben gekocht.
SELECT
C.CustomerID,
C.FirstName + ' ' + C.LastName AS CustomerName,
STRING_CONCAT_WS(', ',
P.Name
) AS ProductsPurchased
FROM Sales.Customer AS C
JOIN Sales.SalesOrderHeader AS SOH
ON C.CustomerID = SOH.CustomerID
JOIN Sales.SalesOrderDetail AS SOD
ON SOH.SalesOrderID = SOD.SalesOrderID
JOIN Production.Product AS P
ON SOD.ProductID = P.ProductID
GROUP BY C.CustomerID, C.FirstName, C.LastName;
Results
| KlantID | Klantnaam | AangeschafteProducten |
|---|---|---|
| 11001 | Jordan Patterson | Touring-2000 Blauw, 50, Mountain-100 Black, 44 |
| 11002 | Alicia Tran | Road-250 Geel, 44, Berg-200 Rood, 48 |
| 11003 | Marco Diaz | Touring-3000 Blauw, 62 |
Hier voegt STRING_CONCAT_WS productnamen samen met komma's en negeert automatisch null-vermeldingen, waardoor handmatige COALESCE, of ISNULL logica wordt vermeden.
Voorbeeld 3: JSON en tekst met scheidingstekens combineren voor API-uitvoer
U kunt deze functies ook samen gebruiken om gestructureerde gegevens voor te bereiden voor een API-antwoord. Met de volgende query maakt u een JSON-matrix met objecten waarin elk object de naam en door komma's gescheiden productlijst van een klant bevat.
SELECT
JSON_ARRAYAGG(
JSON_OBJECTAGG(
'Customer' : C.FirstName + ' ' + C.LastName,
'Products' : STRING_CONCAT_WS(', ', P.Name)
)
) AS ApiOutput
FROM Sales.Customer AS C
JOIN Sales.SalesOrderHeader AS SOH
ON C.CustomerID = SOH.CustomerID
JOIN Sales.SalesOrderDetail AS SOD
ON SOH.SalesOrderID = SOD.SalesOrderID
JOIN Production.Product AS P
ON SOD.ProductID = P.ProductID
GROUP BY C.CustomerID, C.FirstName, C.LastName;
Resultaatvoorbeeld
[
{"Customer":"Jordan Patterson","Products":"Touring-2000 Blue, 50, Mountain-100 Black, 44"},
{"Customer":"Alicia Tran","Products":"Road-250 Yellow, 44, Mountain-200 Red, 48"},
{"Customer":"Marco Diaz","Products":"Touring-3000 Blue, 62"}
]
Een toepassing gebruikt deze structuur rechtstreeks of exporteert deze als een JSON-document via hulpprogramma's zoals SQL Server Management Studio (SSMS) of Azure Data Studio.
Samenvatting
SQL Server 2025 voegt JSON_ARRAYAGG, JSON_OBJECTAGG en STRING_CONCAT_WS toe om het bouwen van gestructureerde tekst en JSON-uitvoer binnen T-SQL te vereenvoudigen. Met deze functies kunt u toepassingsklare gegevens genereren op basis van query's zonder externe code. Of u nu JSON-nettoladingen voorbereidt, rapporten maakt of API-antwoorden opmaakt, deze aggregatiefuncties maken SQL Server 2025 een veelzijdiger platform voor moderne gegevenstoepassingen.