"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment extraire les tableaux de valeur des tableaux d'objets JSON dans SQL Server 2016?

Comment extraire les tableaux de valeur des tableaux d'objets JSON dans SQL Server 2016?

Publié le 2025-04-18
Parcourir:525

How to Extract an Array of Values from an Array of JSON Objects in SQL Server 2016?

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é.

Dernier tutoriel Plus>

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