Resumo : neste tutorial, você aprenderá como usar a JSON_OBJECTAGG()
função MySQL para agregar pares de valores-chave de colunas em um objeto JSON.
Introdução à função MySQL JSON_OBJECTAGG()
A JSON_OBJECTAGG()
função agrega pares de valores-chave de colunas em um objeto JSON. Aqui está a sintaxe da JSON_OBJECTAGG()
função:
JSON_OBJECTAGG(key, value)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A JSON_OBJECTAGG()
função recebe dois nomes de colunas como argumentos: o primeiro sendo usado como chave e o segundo como valor.
A JSON_OBJECTAGG()
função retorna um objeto JSON contendo pares de valores-chave. Retorna NULL
se o resultado não tiver linhas ou em caso de erro.
O erro ocorre quando qualquer nome de chave é NULL
ou o número de argumentos não é igual a 2.
Na prática, você costuma usar a JSON_OBJECTAGG()
função com a cláusula GROUP BY para agregar dados em objetos JSON para cada grupo produzido pela cláusula GROUP BY.
Exemplo de função JSON_OBJECTAGG() do MySQL
No exemplo a seguir, primeiro criaremos uma tabela para armazenar os campos personalizados de uma entidade no banco de dados e, em seguida, usaremos a função JSON_OBJECTAGG() para agregar pares de valores-chave em um objeto JSON.
Primeiro, crie uma tabela chamada properties
:
CREATE TABLE properties (
id INT,
attribute VARCHAR(255) NOT NULL,
value VARCHAR(255)
);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A tabela de propriedades possui três colunas:
id
: Esta é a coluna que armazena osid
registros de outra tabela, por exemplo,products
.attribute
: esta coluna armazena o nome do atributo.value
: esta coluna armazena o valor do atributo.
Segundo, insira alguns dados de amostra na properties
tabela:
INSERT INTO properties(id, attribute, value)
VALUES
(1, 'color', 'red'),
(1, 'size', 'medium'),
(1, 'shape', 'circle'),
(2, 'color', 'blue'),
(2, 'size', 'large'),
(3, 'color', 'green'),
(3, 'shape', 'square');
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Terceiro, consulte os dados da properties
tabela:
SELECT * FROM properties;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+------+-----------+--------+
| id | attribute | value |
+------+-----------+--------+
| 1 | color | red |
| 1 | size | medium |
| 1 | shape | circle |
| 2 | color | blue |
| 2 | size | large |
| 3 | color | green |
| 3 | shape | square |
+------+-----------+--------+
7 rows in set (0.00 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Por fim, agregue os dados pelos valores da id
coluna usando a JSON_OBJECTAGG()
função:
SELECT
id,
JSON_OBJECTAGG(attribute, value) AS attribute_value
FROM
properties
GROUP BY
id;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+------+-------------------------------------------------------+
| id | attribute_value |
+------+-------------------------------------------------------+
| 1 | {"size": "medium", "color": "red", "shape": "circle"} |
| 2 | {"size": "large", "color": "blue"} |
| 3 | {"color": "green", "shape": "square"} |
+------+-------------------------------------------------------+
3 rows in set (0.00 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Resumo
- Use a função MySQL
JSON_OBJECTAGG()
para agregar pares de valores-chave de colunas em objetos JSON.