2017-10-18 3 views
0

folgende Abfrage gibt ganze Tabelle als einzelne JSON-String (Liste von JSON-Objekte - eine pro Zeile):Wie konvertiert man Zeilen in JSON in TSQL Select Query?

SELECT * FROM MyTable FOR JSON AUTO 

ich mehrere Zeilen zurückgeben müssen, wobei jede Zeile eine JSON-String einer signle Zeile der Tabelle sein .

Zum Beispiel, wenn Tabellenfelder sind A, B, C ausgegeben werden soll:

{A: <value>, B: <value>, C: <value>} 
{A: <value>, B: <value>, C: <value>} 
{A: <value>, B: <value>, C: <value>} 
... 
{A: <value>, B: <value>, C: <value>} 

Wie dies in TSQL tun?

Während es möglich ist, JSON-Zeichenfolgen manuell durch Verketten von Zeichenfolgen zu erstellen, würde ich lieber ein vorhandenes Werkzeug verwenden, das Fälle wie Anführungszeichen in Werten behandelt.

+0

Verwenden Sie SQL Server 2016? –

Antwort

0

Dies gibt JSON-Daten in Zeilen aus einer SELECT-Anweisung zurück.

DECLARE @json NVARCHAR(Max) 
SET @json = (SELECT * FROM [Sales].[Customers] FOR JSON PATH, ROOT('data')) 
SELECT value 
FROM OPENJSON(@json,'$.data'); 
+0

Openjson ist nur in SQL Server 2016 verfügbar, https: //docs.microsoft.com/en-us/sql/t-sql/functions/openjson-transact-sql –

+0

Für JSON AUTO begann im Jahr 2016 auch. https://docs.microsoft.com/en-us/sql/relational-databases/json/format-json-output-automatical-with-auto-mode-sql-server. –

+0

haben Sie auch nie eine Version angegeben –

0

Sie können dies versuchen.

SELECT JTBL.* FROM MyTable A 
CROSS APPLY (select A, B, C from MyTable B WHERE B.ID = A.ID FOR JSON AUTO) JTBL (JSTXT) 
Verwandte Themen