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} |
+-------------------------+