Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Função JSON_ARRAYAGG() no Oracle


No Oracle Database, o JSON_ARRAYAGG() A função cria uma matriz JSON de uma coluna de expressões SQL.

Sintaxe


A sintaxe fica assim:
JSON_ARRAYAGG
  ( expr [ FORMAT JSON ]  [ order_by_clause ]
    [ JSON_on_null_clause ] [ JSON_agg_returning_clause ]
    [ STRICT ] 
  )

Onde:
  • expr é qualquer expressão SQL que avalia como um objeto JSON, uma matriz JSON, um literal numérico, um literal de texto ou null .
  • FORMAT JSON indica que a string de entrada é JSON e, portanto, não será citada na saída.
  • order_by_clause permite ordenar os valores JSON dentro da matriz JSON retornada pela instrução.
  • JSON_on_null_clause especifica o comportamento a ser usado quando expr avalia como nulo (ou seja, inclua valores nulos na saída ou não).
  • JSON_agg_returning_clause especifica o tipo de dados da cadeia de caracteres retornada por esta função.
  • STRICT verifica se a saída da função de geração JSON é o JSON correto. Se a verificação falhar, um erro de sintaxe será gerado.

Exemplo


Suponha que executemos a seguinte consulta SQL:
SELECT region_name
FROM regions;

E retorna a seguinte saída:
              REGION_NAME 
_________________________ 
Europe                    
Americas                  
Asia                      
Middle East and Africa    

Se quiséssemos que todos esses valores fossem elementos em uma matriz JSON, poderíamos passar o nome da coluna para o JSON_ARRAYAGG() função.

Assim:
SELECT JSON_ARRAYAGG(region_name)
FROM regions;

Resultado:
["Europe","Americas","Asia","Middle East and Africa"]

Ordem por cláusula


Aqui está um exemplo de uso do ORDER BY cláusula dentro da função:
SELECT JSON_ARRAYAGG(
    region_name ORDER BY region_name DESC
    )
FROM regions;

Resultado:
["Middle East and Africa","Europe","Asia","Americas"]

Esse exemplo classificou os elementos da matriz em ordem decrescente.

Aqui está em ordem crescente:
SELECT JSON_ARRAYAGG(
    region_name ORDER BY region_name ASC
    )
FROM regions;

Resultado:
["Americas","Asia","Europe","Middle East and Africa"]

Consulte a documentação do Oracle para obter mais informações sobre essa função.