"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo extraer matrices de valor de las matrices de objetos JSON en SQL Server 2016?

¿Cómo extraer matrices de valor de las matrices de objetos JSON en SQL Server 2016?

Publicado el 2025-04-18
Navegar:546

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

SQL Server 2016: Transformando las matrices de objetos JSON en matrices de valor

Las capacidades JSON de SQL Server 2016 son robustas, pero extraer estructuras de datos específicas a veces requiere enfoques creativos. Este ejemplo demuestra transformar una matriz JSON de objetos en una matriz más simple de valores.

el desafío:

Considere una consulta que genera una matriz JSON de objetos:

SELECT (SELECT item_id 
FROM #temp
FOR JSON PATH, root('ids')) 

Esto produce JSON así:

{
  "ids": [
    {"item_id": "1234"},
    {"item_id": "5678"},
    {"item_id": "7890"}
  ]
}

El objetivo es reestructurar esto en una matriz JSON que contiene solo los valores item_id :

{
  "ids": [
    "1234",
    "5678",
    "7890"
  ]
}

la solución:

La clave es un proceso de dos pasos que aprovecha XML como intermediario:

SELECT  
JSON_QUERY('['   STUFF(( SELECT ','   '"'   item_id   '"' 
FROM #temp FOR XML PATH('')),1,1,'')   ']' ) ids  
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER 

Este código primero usa para la ruta xml ('') para concatenar los valores item_id , rodeando cada uno con citas dobles. Stuff elimina la coma principal. El resultado se envuelve en soportes cuadrados para crear una matriz JSON válida, que json_query parses. Finalmente, para la ruta JSON, sin_array_wrapper formatea la salida como una matriz JSON simple. Esto efectivamente aplana la matriz de objeto JSON original en la matriz de valor deseada.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3