JSON- und Zeichenfolgenaggregation
SQL Server 2025 führt neue Aggregationsfunktionen zum Erstellen von JSON-Arrays, JSON-Objekten und durch Trennzeichen getrennten Zeichenfolgen ein. Diese Ergänzungen erleichtern das Generieren strukturierter Ausgaben wie API-Antworten, Berichte oder Protokollexporte direkt aus T-SQL-Abfragen. Mit den neuen Funktionen können Sie die Datenformatierung in die Datenbankebene verschieben, wodurch die Notwendigkeit komplexer clientseitiger Transformationen reduziert wird.
Übersicht über JSON- und Zeichenfolgenaggregationsfunktionen
Sehen wir uns die drei neuen Aggregationsfunktionen an:
JSON_ARRAYAGG
Erstellt ein JSON-Array aus den Werten eines Ausdrucks. Jeder Zeilenwert wird zu einem Element im resultierenden JSON-Array. Es vereinfacht das Generieren von Arrays von Werten wie Listen von IDs oder Namen.
JSON_OBJECTAGG
Erstellt ein JSON-Objekt aus Schlüssel-Wert-Paaren. Das erste Argument definiert den Schlüssel, und der zweite definiert den Wert. Diese Wertpaarung erleichtert das Erstellen von JSON-Dokumenten direkt aus Abfrageergebnissen.
STRING_CONCAT_WS
Verkettet Zeichenfolgen mit einem angegebenen Trennzeichen, während NULL-Werte übersprungen werden. Der Name der Funktion steht für String CONCAT With Separator. Sie bietet eine effiziente Möglichkeit, Werte wie Namen, Tags oder durch Trennzeichen getrennte Listen zu verbinden.
Zeichenfolgenverkettungsoperator ||
SQL Server 2025 führt den ANSI-Standardoperator || als Alternative zu + zur Zeichenfolgenverkettung ein. Es bietet eine tragbarere Syntax und wird häufig bevorzugt, wenn mehrere Spalten in einer einzelnen Textausgabe kombiniert werden.
UNISTR-Funktion
UNISTR() gibt eine auf Escape-Sequenzen basierende Zeichenfolge im Unicode-Format zurück, mit der Sie Zeichen nach Code-Punkt oder Escape-Notation einfügen können. Es ist nützlich, wenn Skripts erstellt werden, die nicht druckbare oder mehrsprachige Zeichen enthalten.
Beispiel 1: Erstellen von JSON-Arrays und -Objekten aus Abfrageergebnissen
Stellen Sie sich vor, Ihre Datenbank speichert Kundenauftragsdaten in zwei Tabellen, Sales.Customer und Sales.SalesOrderHeader. Das Analyseteam benötigt einen JSON-Bericht, in dem jeder Kunde und seine Auftrags-IDs für die Integration in ein Webdashboard zusammengefasst werden.
Abfrage: Verwenden von JSON_ARRAYAGG und JSON_OBJECTAGG
Die folgende Abfrage ruft jeden Kunden zusammen mit einem JSON-Array ihrer Bestell-IDs ab, die in ein JSON-Objekt eingeschlossen sind.
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;
Ergebnisse
| Kunden-ID | Kundenname | Kundenzusammenfassung |
|---|---|---|
| 11001 | Jordan Patterson | {"Customer":11001,"Orders":[43722,43723,43724]} |
| 11002 | Alicia Tran | {"Customer":11002,"Orders":[43725,43726]} |
| 11003 | Marco Diaz | {"Customer":11003,"Orders":[43727]} |
In diesem Beispiel sammelt JSON_ARRAYAGG alle Auftrags-IDs für jeden Kunden in einem JSON-Array, und JSON_OBJECTAGG umschließt das Ergebnis in einem JSON-Objekt mit unverschlüsselten Schlüssel-Wert-Paaren. Die gesamte Struktur wird in einer T-SQL-Abfrage erstellt.
Beispiel 2: Formatieren der Textausgabe mithilfe von STRING_CONCAT_WS
Das Marketingteam benötigt eine Liste der gekauften Produktnamen jedes Kunden, die durch Kommas für eine E-Mail-Kampagne getrennt sind. Die STRING_CONCAT_WS Funktion kann diese Ergebnisse sauber generieren, wobei alle NULL-Werte weggelassen werden.
Abfrage: Hinzufügen von Produktnamen mit einem Trennzeichen
Die folgende Abfrage ruft jeden Kunden zusammen mit einer durch Trennzeichen getrennten Liste der von ihnen erworbenen Produkte ab.
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;
Ergebnisse
| Kunden-ID | Kundenname | GekaufteProdukte |
|---|---|---|
| 11001 | Jordan Patterson | Touren-2000 Blau, 50, Berg-100 Schwarz, 44 |
| 11002 | Alicia Tran | Straße-250 Gelb, 44, Berg-200 Rot, 48 |
| 11003 | Marco Diaz | Touren-3000 Blau, 62 |
Hier verknüpft STRING_CONCAT_WS Produktnamen mit Kommas und ignoriert NULL-Einträge automatisch, wodurch manuelle COALESCE- oder ISNULL-Logik vermieden wird.
Beispiel 3: Kombinieren von JSON und durch Trennzeichen getrennten Text für die API-Ausgabe
Sie können diese Funktionen auch zusammen verwenden, um strukturierte Daten für eine API-Antwort vorzubereiten. Die folgende Abfrage erstellt ein JSON-Array von Objekten, in denen jedes Objekt den Namen und die durch Trennzeichen getrennte Produktliste eines Kunden enthält.
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;
Ergebnisbeispiel
[
{"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"}
]
Eine Anwendung verwendet diese Struktur direkt oder exportiert sie als JSON-Dokument über Tools wie SQL Server Management Studio (SSMS) oder Azure Data Studio.
Zusammenfassung
SQL Server 2025 fügt JSON_ARRAYAGG, JSON_OBJECTAGG und STRING_CONCAT_WS hinzu, um das Erstellen von strukturiertem Text und JSON-Ausgaben in T-SQL zu vereinfachen. Mit diesen Funktionen können Sie anwendungsbereite Daten aus Abfragen ohne externen Code generieren. Ganz gleich, ob Sie JSON-Nutzlasten vorbereiten, Berichte erstellen oder API-Antworten formatieren, diese Aggregationsfeatures machen SQL Server 2025 zu einer vielseitigeren Plattform für moderne Datenanwendungen.