Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: SQL Server 2016 (13.x) und spätere versionen
: Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics (serverless SQL pool only)
SQL database in Microsoft Fabric
Die folgenden Beispiele veranschaulichen einige möglichkeiten, die FOR JSON Klausel und die JSON-Ausgabe in SQL Server oder in Client-Apps zu verwenden. Weitere Informationen finden Sie unter Formatieren von Abfrageergebnissen als JSON mit FOR JSON.
In Fabric Data Warehouse FOR JSON muss der letzte Operator in der Abfrage sein und ist daher nicht innerhalb von Unterabfragen zulässig, wie in den Beispielen in diesem Artikel.
Verwenden der FOR JSON-Ausgabe in den Variablen des SQL-Datenbank-Engines
Die Ausgabe der FOR JSON Klausel ist vom Typ nvarchar(max), sodass Sie sie einer beliebigen Variablen zuweisen können, wie im folgenden Beispiel gezeigt.
DECLARE @x NVARCHAR(MAX) =
(SELECT TOP 10 *
FROM Sales.SalesOrderHeader
FOR JSON AUTO)
Verwenden der FOR JSON-Ausgabe in benutzerdefinierten FUNKTIONEN des SQL-Datenbankmoduls
Sie können benutzerdefinierte Funktionen erstellen, die Resultsets als JSON formatieren und diese JSON-Ausgabe zurückgeben. Im folgenden Beispiel wird eine benutzerdefinierte Funktion erstellt, die einige Auftragsdetailzeilen abruft und sie als JSON-Array formatiert.
CREATE FUNCTION GetSalesOrderDetails(@salesOrderId int)
RETURNS NVARCHAR(MAX)
AS
BEGIN
RETURN (SELECT UnitPrice, OrderQty
FROM Sales.SalesOrderDetail
WHERE SalesOrderID = @salesOrderId
FOR JSON AUTO)
END
Sie können diese Funktion in einem Batch oder in einer Abfrage verwenden, wie im folgenden Beispiel gezeigt.
DECLARE @x NVARCHAR(MAX) = dbo.GetSalesOrderDetails(43659)
PRINT dbo.GetSalesOrderDetails(43659)
SELECT TOP 10
H.*, dbo.GetSalesOrderDetails(H.SalesOrderId) AS Details
FROM Sales.SalesOrderHeader H
Zusammenführen von übergeordneten und untergeordneten Daten in einer einzelnen Tabelle
Im folgenden Beispiel wird jeder Satz von untergeordneten Zeilen als JSON-Array formatiert. Das JSON-Array wird der Wert der Spalte „Details“ in der übergeordneten Tabelle.
SELECT TOP 10 SalesOrderId, OrderDate,
(SELECT TOP 3 UnitPrice, OrderQty
FROM Sales.SalesOrderDetail D
WHERE H.SalesOrderId = D.SalesOrderID
FOR JSON AUTO) AS Details
INTO SalesOrder
FROM Sales.SalesOrderHeader H
Aktualisieren der Daten in JSON-Spalten
Im folgenden Beispiel wird gezeigt, dass Sie den Wert einer Spalte aktualisieren können, die JSON-Text enthält.
UPDATE SalesOrder
SET Details =
(SELECT TOP 1 UnitPrice, OrderQty
FROM Sales.SalesOrderDetail D
WHERE D.SalesOrderId = SalesOrder.SalesOrderId
FOR JSON AUTO)
Verwenden der FOR JSON-Ausgabe in einer C#-Client-App
Im folgenden Beispiel wird veranschaulicht, wie die JSON-Ausgabe einer Abfrage in ein StringBuilder-Objekt in einer C#-Client-App abgerufen wird. Angenommen, die Variable queryWithForJson enthält den Text einer SELECT Anweisung mit einer FOR JSON Klausel.
var queryWithForJson = "SELECT ... FOR JSON";
using(var conn = new SqlConnection("<connection string>"))
{
using(var cmd = new SqlCommand(queryWithForJson, conn))
{
conn.Open();
var jsonResult = new StringBuilder();
var reader = cmd.ExecuteReader();
if (!reader.HasRows)
{
jsonResult.Append("[]");
}
else
{
while (reader.Read())
{
jsonResult.Append(reader.GetValue(0).ToString());
}
}
}
}
Weitere Informationen zu JSON im SQL-Datenbankmodul
Eine visuelle Einführung in die integrierte JSON-Unterstützung finden Sie in den folgenden Videos: