MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

MariaDB JSON_OBJECT() explicado


No MariaDB, JSON_OBJECT() é uma função interna que retorna um objeto JSON contendo os pares chave/valor fornecidos como argumentos.

Sintaxe


A sintaxe fica assim:
JSON_OBJECT([key, value[, key, value] ...])

A função aceita qualquer número de pares chave/valor.

A lista de chave/valor também pode estar vazia.

Exemplo


Aqui está um exemplo simples para demonstrar a função:
SELECT JSON_OBJECT("name", "Homer", "type", "Idiot");

Resultado:
+-----------------------------------------------+
| JSON_OBJECT("name", "Homer", "type", "Idiot") |
+-----------------------------------------------+
| {"name": "Homer", "type": "Idiot"}            |
+-----------------------------------------------+

Sem argumentos


Como mencionado, a lista de argumentos pode estar vazia, nesse caso, um objeto vazio será retornado:
SELECT JSON_OBJECT();

Resultado:
+---------------+
| JSON_OBJECT() |
+---------------+
| {}            |
+---------------+

Contagem de parâmetros incorreta


No entanto, se você fornecer argumentos, eles devem ser um número par de argumentos (para que cada chave tenha um valor correspondente).

Aqui está o que acontece quando eu passo apenas um argumento para JSON_OBJECT() :
SELECT JSON_OBJECT("name");

Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_OBJECT'

O mesmo erro ocorre se eu passar três argumentos:
SELECT JSON_OBJECT("name", "Homer", "type");

Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_OBJECT'

E assim por diante…

Nomes de chave nulos


A documentação do MariaDB afirma que um erro é retornado se qualquer nome de chave for NULL .

No entanto, recebo um resultado diferente:
SELECT JSON_OBJECT(null, null);

Resultado:
+-------------------------+
| JSON_OBJECT(null, null) |
+-------------------------+
| {"": null}              |
+-------------------------+