Die JSON -Funktionen von SQL Server 2016 sind robust, aber das Extrahieren spezifischer Datenstrukturen erfordert manchmal kreative Ansätze. Dieses Beispiel zeigt, wie ein JSON -Array von Objekten in ein einfacheres Array von Werten umgewandelt wird.
Die Herausforderung:
Betrachten Sie eine Abfrage, die ein JSON -Array von Objekten generiert:
select (select item_id Aus #Temp Für JSON PATH, root ('ids'))
SELECT (SELECT item_id
FROM #temp
FOR JSON PATH, root('ids'))
{ "IDS": [ {"item_id": "1234"}, {"item_id": "5678"}, {"item_id": "7890"} ] }
{
"ids": [
{"item_id": "1234"},
{"item_id": "5678"},
{"item_id": "7890"}
]
}
Werte enthält:
{
"IDS": [
"1234",
"5678",
"7890"
]
}
{
"ids": [
"1234",
"5678",
"7890"
]
}
Der Schlüssel ist ein zweistufiger Prozess, der XML als Vermittler nutzt:
WÄHLEN JSON_QUERY ('[' Zeug ((select ',' '' item_id '"' '' Aus #temp für xml path ('')), 1,1, '') ']') ids Für JSON Path, ohne_array_wrapper
SELECT
JSON_QUERY('[' STUFF(( SELECT ',' '"' item_id '"'
FROM #temp FOR XML PATH('')),1,1,'') ']' ) ids
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
, um die item_id Werte zu verkettet, die jeweils mit Doppelzitaten umgeben.
stuff entfernt das führende Komma. Das Ergebnis wird dann in quadratische Klammern eingewickelt, um ein gültiges JSON -Array zu erstellen, das
json_query Parse. Schließlich
für JSON -Pfad, ohne_array_wrapper die Ausgabe als einfaches JSON -Array. Dies flacht das ursprüngliche JSON -Objekt -Array effektiv in das gewünschte Wert -Array.
.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3