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 2016 (13.x) och senare
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics (endast serverlös SQL-pool)
Följande exempel visar några av sätten att använda FOR JSON
-satsen och dess JSON-utdata i SQL Server eller i klientappar.
Formatera frågeresultat som JSON med FOR JSON
I Fabric Data Warehouse måste FOR JSON
vara den sista operatorn i frågan och tillåts därför inte i underfrågor, som i exemplen i den här artikeln.
Använd "FÖR JSON"-utdata i SQL Server-variabler
Utdata från FOR JSON
-satsen är av typen nvarchar(max), så du kan tilldela den till valfri variabel, som du ser i följande exempel.
DECLARE @x NVARCHAR(MAX) =
(SELECT TOP 10 *
FROM Sales.SalesOrderHeader
FOR JSON AUTO)
Använd FÖR JSON-utdata i användardefinierade SQL Server-funktioner
Du kan skapa användardefinierade funktioner som formaterar resultatuppsättningar som JSON och returnerar dessa JSON-utdata. I följande exempel skapas en användardefinierad funktion som hämtar vissa försäljningsorderdetaljrader och formaterar dem som en JSON-matris.
CREATE FUNCTION GetSalesOrderDetails(@salesOrderId int)
RETURNS NVARCHAR(MAX)
AS
BEGIN
RETURN (SELECT UnitPrice, OrderQty
FROM Sales.SalesOrderDetail
WHERE SalesOrderID = @salesOrderId
FOR JSON AUTO)
END
Du kan använda den här funktionen i en batch eller fråga, som du ser i följande exempel.
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
Sammanfoga överordnade och underordnade data i en enda tabell
I följande exempel formateras varje uppsättning underordnade rader som en JSON-matris. JSON-matrisen blir värdet för kolumnen Information i den överordnade tabellen.
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
Uppdatera data i JSON-kolumner
I följande exempel visas att du kan uppdatera värdet för en kolumn som innehåller JSON-text.
UPDATE SalesOrder
SET Details =
(SELECT TOP 1 UnitPrice, OrderQty
FROM Sales.SalesOrderDetail D
WHERE D.SalesOrderId = SalesOrder.SalesOrderId
FOR JSON AUTO)
Använd FOR JSON-utdata i en C#-klientapp
I följande exempel visas hur du hämtar JSON-utdata från en fråga till ett StringBuilder-objekt i en C#-klientapp. Anta att variabeln queryWithForJson
innehåller texten i en SELECT
-instruktion med en FOR JSON
-sats.
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());
}
}
}
}
Läs mer om JSON i SQL Database Engine
Microsoft-videor
En visuell introduktion till det inbyggda JSON-stödet i SQL Server och Azure SQL Database finns i följande videor: