Remove todos os campos ou elementos com valor null de um objeto JSON ou array JSON.
Formato do comando
JSON JSON_STRIP_NULLS(
JSON <json_expr>
[, BOOLEAN <include_arrays> ]
[, BOOLEAN <remove_empty> ]
[, STRING <json_path> ]
)
Descrição dos parâmetros
|
Parâmetro |
Obrigatório |
Descrição |
|
json_expr |
Sim |
Tipo JSON. Objeto ou array JSON. Para mais detalhes, consulte Tipo de dados JSON. |
|
include_arrays |
Não |
Tipo BOOLEAN. Define se valores nulos JSON devem ser removidos de arrays JSON. Valores aceitos:
|
|
remove_empty |
Não |
Tipo BOOLEAN. Indica se objetos JSON vazios serão excluídos após a remoção dos valores nulos. Opções disponíveis:
Nota
Se remove_empty for |
|
json_path |
Não |
Tipo STRING. Especifica o caminho em json_expr onde os valores nulos JSON devem ser removidos. Nota
Ao utilizar o parâmetro json_path, forneça quatro argumentos, sendo json_path obrigatoriamente o quarto. |
Valor retornado
Retorna um valor do tipo JSON. Regras de retorno:
Se o valor de uma chave em um objeto JSON for nulo, o par chave-valor correspondente será removido.
Se o JSON resultante não contiver nenhum elemento, a função retornará JSON null.
Se json_path for NULL ou inválido, a função retornará json_expr.
Se json_expr, include_arrays ou remove_empty for NULL, o resultado será NULL.
Exemplos de uso
-
Exemplo 1: Remover valores nulos JSON de objetos e arrays.
SELECT JSON_STRIP_NULLS(NULL) AS json_data1, JSON_STRIP_NULLS(JSON 'null') AS json_data2, JSON_STRIP_NULLS(JSON '[1, null, 2, null]') AS json_data3, JSON_STRIP_NULLS(JSON '[1, null, 2, null]', FALSE) AS json_data4, JSON_STRIP_NULLS(JSON '[1, null, 2, null, [null]]',TRUE,TRUE) AS json_data5, JSON_STRIP_NULLS(JSON '[1, null, 2, null, [null]]',NULL,TRUE) AS json_data6, JSON_STRIP_NULLS( JSON '{"a": {"b": {"c": null}}, "d": [null], "e": [], "f": 1}', FALSE,TRUE) AS json_data7, JSON_STRIP_NULLS( JSON '{"a": {"b": {"c": null}}, "d": [null], "e": [], "f": 1}', TRUE,TRUE) AS json_data8;Resultado:
+------------+------------+------------+-----------------+------------+------------+---------------------------+------------+ | json_data1 | json_data2 | json_data3 | json_data4 | json_data5 | json_data6 | json_data7 | json_data8 | +------------+------------+------------+-----------------+------------+------------+---------------------------+------------+ | NULL | null | [1,2] | [1,null,2,null] | [1,2] | NULL | {"d":[null],"e":[],"f":1} | {"f":1} | +------------+------------+------------+-----------------+------------+------------+---------------------------+------------+ -
Exemplo 2: Excluir objetos vazios em um caminho JSON específico.
SELECT JSON_STRIP_NULLS( JSON '{ "person": { "name": "Alice", "address": { "street": null, "city": "New York", "zip": null }, "phone": null }, "company": { "name": "Acme Corp", "location": null } }', true, true, '$.person.address' ) AS json_data;Resultado:
{"person":{"name":"Alice","phone":null,"address":{"city":"New York"}},"company":{"name":"Acme Corp","location":null}} -
Exemplo 3: Retornar
json_exprsem processamento quandojson_pathfor inválido ou ilegal.SELECT JSON_STRIP_NULLS( JSON '{ "person": { "name": "Alice", "address": { "street": null, "city": "New York", "zip": null }, "phone": null }, "company": { "name": "Acme Corp", "location": null }, "uid":null }', true, true, '$person.a' ) AS json_data;Resultado:
{"uid":null,"person":{"name":"Alice","phone":null,"address":{"zip":null,"city":"New York","street":null}},"company":{"name":"Acme Corp","location":null}}
Funções relacionadas
A função JSON_STRIP_NULLS pertence ao conjunto de funções JSON. Para outras operações desse tipo, consulte Funções JSON.