"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como extrair matrizes de valor de matrizes de objetos JSON no SQL Server 2016?

Como extrair matrizes de valor de matrizes de objetos JSON no SQL Server 2016?

Postado em 2025-04-18
Navegar:183

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

SQL Server 2016: Transformando as matrizes de objeto JSON em matrizes de valores

Os recursos JSON do SQL Server 2016 são robustos, mas extrair estruturas de dados específicas às vezes requer abordagens criativas. Este exemplo demonstra a transformação de uma matriz JSON de objetos em uma variedade mais simples de valores.

o desafio:

Considere uma consulta que gera uma matriz JSON de objetos:

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

isso produz json como este:

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

O objetivo é reestruturar isso em uma matriz json contendo apenas o item_id valores:

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

A solução:

A chave é um processo de duas etapas que alavancam o XML como um intermediário:

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

Este código primeiro usa para xml path ('') para concatenar os valores item_id , em torno de cada uma com cotações duplas. Stuff remove a vírgula líder. O resultado é então embrulhado em colchetes para criar uma matriz JSON válida, que json_query passa. Finalmente, para JSON PATH, sem_array_wrapper formate a saída como uma simples array json. Isso efetivamente achata a matriz de objeto JSON original na matriz de valor desejada.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3