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 versioner 
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics (endast serverlös SQL-pool)
SQL-databas i Förhandsversion av Microsoft Fabric
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. Mer information finns i 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 Database Engine-variablerna
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 FOR JSON-output i SQL Database Engine användardefinierade 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
En visuell introduktion till det inbyggda JSON-stödet finns i följande videor: