Maison >base de données >tutoriel mysql >Comment extraire un tableau de valeurs d'un tableau d'objets JSON dans SQL Server 2016 ?
SQL Server 2016 : Transformer des tableaux d'objets JSON en tableaux de valeurs
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 montre la transformation d'un tableau d'objets JSON en un tableau de valeurs plus simple.
Le défi :
Considérons une requête qui génère un tableau d'objets JSON :
<code class="language-sql">SELECT (SELECT item_id FROM #temp FOR JSON PATH, root('ids')) </code>
Cela donne du JSON comme ceci :
<code class="language-json">{ "ids": [ {"item_id": "1234"}, {"item_id": "5678"}, {"item_id": "7890"} ] }</code>
Le but est de restructurer cela en un tableau JSON contenant uniquement les item_id
valeurs :
<code class="language-json">{ "ids": [ "1234", "5678", "7890" ] }</code>
La solution :
La clé est un processus en deux étapes utilisant XML comme intermédiaire :
<code class="language-sql">SELECT JSON_QUERY('[' + STUFF(( SELECT ',' + '"' + item_id + '"' FROM #temp FOR XML PATH('')),1,1,'') + ']' ) ids FOR JSON PATH, WITHOUT_ARRAY_WRAPPER </code>
Ce code utilise d'abord FOR XML PATH('')
pour concaténer les valeurs item_id
, en entourant chacune de guillemets doubles. STUFF
supprime la virgule de début. Le résultat est ensuite placé entre crochets pour créer un tableau JSON valide, qui JSON_QUERY
analyse. Enfin, FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
formate la sortie sous la forme d'un simple tableau JSON. Cela aplatit efficacement le tableau d'objets JSON d'origine dans le tableau de valeurs souhaité.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!