Maison >base de données >tutoriel mysql >Comment convertir un tableau d'objets SQL Server en un tableau de valeurs JSON dans SQL 2016 ?

Comment convertir un tableau d'objets SQL Server en un tableau de valeurs JSON dans SQL 2016 ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-09 18:52:41328parcourir

How to Convert a SQL Server Array of Objects to an Array of JSON Values in SQL 2016?

Conversion SQL en JSON : Convertir un tableau d'objets en tableau de valeurs dans SQL 2016

SQL 2016 fournit la fonction de conversion des données SQL Server en JSON, élargissant ainsi de nombreuses possibilités. Cependant, lorsqu'il s'agit de tableaux d'objets, la structure JSON requise peut parfois différer du résultat de conversion par défaut.

Plus précisément, lors de la conversion d'un tableau d'objets en JSON, le comportement par défaut consiste à intégrer l'objet en tant que son propre tableau dans le tableau parent. Par exemple :

<code class="language-sql">SELECT (SELECT item_id FROM #temp FOR JSON PATH,root('ids'))</code>

Résultat :

<code class="language-json">{
    "ids": [{
        "item_id": "1234"
    },
    {
        "item_id": "5678"
    },
    {
        "item_id": "7890"
    }]
}</code>

Dans certains cas, il peut être préférable d'afficher un tableau d'objets sous forme de tableau de valeurs, sans structures imbriquées.

Pour y parvenir, une transformation XML intermédiaire peut être utilisée :

<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 étape convertit les données en une structure XML aplatie, qui peut ensuite être convertie en JSON à l'aide des paramètres JSON_QUERY() et WITHOUT_ARRAY_WRAPPER. Le résultat est le tableau souhaité contenant les valeurs :

<code class="language-json">"ids": [
        "1234",
        "5678",
        "7890"
    ]</code>

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn