Substitui ou insere um valor em uma posição específica de um documento JSON.
Sintaxe
JSON json_set(JSON <input>, ARRAY<STRING> <path>, JSON <value>, BOOLEAN <create_if_missing>);
Parâmetros
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
|
|
JSON |
Sim |
Array ou objeto JSON a modificar. |
|
|
ARRAY |
Sim |
Posição de destino, expressa como um array de strings em que cada elemento representa um nível de aninhamento. Para referenciar um índice de array, use sua representação numérica em string, como |
|
|
JSON |
Sim |
Valor JSON a gravar na posição de destino. |
|
|
BOOLEAN |
Sim |
Define o comportamento quando a posição de destino não existe. Valores válidos: |
Valor de retorno
Retorna o valor JSON modificado.
Exemplos
Substituir um valor existente
Substitua f1 (índice 0, campo f1) por [2,3,4]:
SELECT json_set(
JSON '[{"f1":1,"f2":null},2,null,3]',
array("0", "f1"),
JSON '[2,3,4]',
false
);
Resultado:
[{"f1":[2,3,4],"f2":null},2,null,3]
Tentativa de substituição em caminho inexistente (create_if_missing=false)
O caminho f3 não existe no primeiro elemento. Como create_if_missing está definido como false, a função retorna o JSON original sem alterações:
SELECT json_set(
JSON '[{"f1":1,"f2":null},2,null,3]',
array("0", "f3"),
JSON '[2,3,4]',
false
);
Resultado:
[{"f1":1,"f2":null},2,null,3]
Inserir valor em caminho inexistente (create_if_missing=true)
O caminho f3 não existe no primeiro elemento. Com create_if_missing definido como true, a função adiciona f3 como nova chave:
SELECT json_set(
JSON '[{"f1":1,"f2":null},2,null,3]',
array("0", "f3"),
JSON '[2,3,4]',
true
);
Resultado:
[{"f1":1,"f2":null,"f3":[2,3,4]},2,null,3]