SQL Server 2016: JSON-Objektarrays in Wertearrays umwandeln
Die JSON-Funktionen von SQL Server 2016 sind robust, aber das Extrahieren bestimmter Datenstrukturen erfordert manchmal kreative Ansätze. Dieses Beispiel zeigt die Umwandlung eines JSON-Arrays von Objekten in ein einfacheres Array von Werten.
Die Herausforderung:
Stellen Sie sich eine Abfrage vor, die ein JSON-Array von Objekten generiert:
SELECT (SELECT item_id FROM #temp FOR JSON PATH, root('ids'))
Dies ergibt JSON wie folgt:
{ "ids": [ {"item_id": "1234"}, {"item_id": "5678"}, {"item_id": "7890"} ] }
Das Ziel besteht darin, dies in ein JSON-Array umzustrukturieren, das nur die item_id
-Werte enthält:
{ "ids": [ "1234", "5678", "7890" ] }
Die Lösung:
Der Schlüssel ist ein zweistufiger Prozess, der XML als Vermittler nutzt:
SELECT JSON_QUERY('[' + STUFF(( SELECT ',' + '"' + item_id + '"' FROM #temp FOR XML PATH('')),1,1,'') + ']' ) ids FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
Dieser Code verwendet zunächst FOR XML PATH('')
, um die item_id
-Werte zu verketten und jeden in doppelte Anführungszeichen zu setzen. STUFF
entfernt das führende Komma. Das Ergebnis wird dann in eckige Klammern eingeschlossen, um ein gültiges JSON-Array zu erstellen, das JSON_QUERY
analysiert. Schließlich formatiert FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
die Ausgabe als einfaches JSON-Array. Dadurch wird das ursprüngliche JSON-Objektarray effektiv auf das gewünschte Wertearray reduziert.
Das obige ist der detaillierte Inhalt vonWie extrahiere ich ein Wertearray aus einem Array von JSON-Objekten in SQL Server 2016?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!