SQL Server 2016: Transformer les tableaux d'objets JSON en tableaux de valeur
Les capacités JSON de SQL Server 2016 sont robustes, mais l'extraction de structures de données spécifiques nécessite parfois des approches créatives. Cet exemple démontre la transformation d'un tableau JSON d'objets en un tableau plus simple de valeurs.
Le défi:
Considérons une requête qui génère un tableau JSON d'objets:
SELECT (SELECT item_id
FROM #temp
FOR JSON PATH, root('ids'))
cela donne JSON comme ceci:
{
"ids": [
{"item_id": "1234"},
{"item_id": "5678"},
{"item_id": "7890"}
]
}
Le but est de restructurer cela dans un tableau JSON contenant uniquement les valeurs item_id
:
{
"ids": [
"1234",
"5678",
"7890"
]
}
La solution:
La clé est un processus en deux étapes tirant parti de XML en tant qu'intermédiaire:
SELECT
JSON_QUERY('[' STUFF(( SELECT ',' '"' item_id '"'
FROM #temp FOR XML PATH('')),1,1,'') ']' ) ids
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
Ce code utilise d'abord pour xml path ('')
pour concaténer les valeurs item_id
, entourant chacune de citations doubles. trucs
supprime la virgule principale. Le résultat est ensuite enveloppé entre crochets pour créer un tableau JSON valide, qui json_query
parses. Enfin, pour JSON Path, sans_array_wrapper
formats la sortie comme un simple tableau JSON. Cela aplatit efficacement le tableau d'objets JSON original dans le tableau de valeur souhaité.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3