Maison >base de données >tutoriel mysql >Comment convertir un tableau d'objets SQL Server en un tableau de valeurs en JSON ?
Conversion JSON SQL Server 2016 : transformer des tableaux d'objets en tableaux de valeurs
Les fonctionnalités JSON de SQL Server 2016 sont puissantes, mais la conversion de tableaux d'objets en tableaux de valeurs nécessite une approche spécifique. Illustrons le défi et la solution.
Considérez ce scénario :
<code class="language-sql">CREATE TABLE #temp (item_id VARCHAR(256)) INSERT INTO #temp VALUES ('1234'),('5678'),('7890') SELECT * FROM #temp -- Initial JSON conversion attempt SELECT (SELECT item_id FROM #temp FOR JSON PATH,root('ids')) </code>
Cela donne un tableau JSON de objets :
<code class="language-json">{ "ids": [{ "item_id": "1234" }, { "item_id": "5678" }, { "item_id": "7890" }] }</code>
L'objectif, cependant, est un tableau JSON de valeurs :
<code class="language-json">{ "ids": [ "1234", "5678", "7890" ] }</code>
La clé est d'exploiter XML comme étape 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>
Cette requête construit d'abord une chaîne XML représentant les valeurs, puis utilise STUFF
pour supprimer la virgule de début et enfin place le résultat entre crochets pour former un tableau JSON. La clause FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
garantit que la sortie est un seul tableau de valeurs JSON, et non un tableau contenant un seul objet. Cela permet d'obtenir efficacement la structure JSON souhaitée.
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!