La fonction JSON_SET remplace la valeur à une position donnée dans un contenu JSON ou y ajoute une valeur.
Syntaxe
JSON JSON_SET(JSON <input>, ARRAY<STRING> <path>, JSON <value>, BOOLEAN <create_if_missing>);
-- Standard example.
-- Returns [{"f1":4,"f2":null},2,null,3].
SELECT JSON_SET(JSON'[{"f1":1,"f2":null}, 2, null, 3]',
ARRAY("0", "f1"),
JSON'4',
false);
Paramètres
input : obligatoire. Contenu JSON dans lequel remplacer une valeur. Les types JSON OBJECT et JSON ARRAY sont pris en charge.
path : obligatoire. Position du contenu JSON à remplacer. La valeur est de type ARRAY<STRING>. Chaque élément du tableau spécifie le chemin d'un niveau d'imbrication dans le contenu JSON. Si le contenu JSON comporte n niveaux d'imbrication, le tableau contient n éléments. Si l'objet JSON n'est pas imbriqué, la première valeur est
"0".value : obligatoire. Valeur JSON de remplacement.
create_if_missing : obligatoire. Indique s'il faut ajouter la valeur JSON à input si aucune valeur n'existe à la position spécifiée. La valeur est de type BOOLEAN. Définissez-la sur true pour ajouter la valeur, ou sur false pour ne pas l'ajouter.
Valeur renvoyée
Le contenu JSON modifié.
Exemples
-
Exemple 1 : Remplacer la valeur à une position donnée dans un contenu JSON.
-- Returns [{"f1":[2,3,4],"f2":null},2,null,3]. SELECT JSON_SET(JSON'[{"f1":1,"f2":null},2,null,3]', ARRAY("0","f1"), JSON'[2,3,4]', false); -- JSON content with a two-level nested array. -- Returns [{"f1":1,"f2":null},2,3,[4,6]]. SELECT JSON_SET(JSON'[{"f1":1,"f2":null},2,3,[4,5]]', ARRAY("3","1"), JSON'6', false); -
Exemple 2 : Remplacer la valeur à une position donnée dans un contenu JSON. Le paramètre create_if_missing est défini sur false. Si aucune valeur n'existe à la position spécifiée, la fonction n'effectue ni remplacement ni ajout.
-- Returns [{"f1":1,"f2":null},2,null,3]. SELECT JSON_SET(JSON'[{"f1":1,"f2":null},2,null,3]', ARRAY("0","f3"), JSON'[2,3,4]', false); -
Exemple 3 : Remplacer la valeur à une position donnée dans un contenu JSON. Le paramètre create_if_missing est défini sur true. Si aucune valeur n'existe à la position spécifiée, la fonction ajoute le contenu JSON de remplacement à
input.-- Returns [{"f1":1,"f2":null,"f3":[2,3,4]},2,null,3]. SELECT JSON_SET(JSON'[{"f1":1,"f2":null},2,null,3]', ARRAY("0","f3"), JSON'[2,3,4]', true); -
Exemple 4 : Si input est un objet JSON, le premier élément de path doit être une clé valide.
-- Returns {"f1":[2,3,4]} SELECT JSON_SET(JSON'{"f1":1}', ARRAY("f1"), JSON'[2,3,4]', false); -- Returns {"f1":1} -- The JSON content is not an array. In this case, the path ["0"] refers to the field whose key is the string "0". The path does not exist, so no replacement is performed. SELECT JSON_SET(JSON'{"f1":1}', ARRAY("0"), JSON'[2,3,4]', false);RemarqueSi vous exécutez la commande sur un client MaxCompute et que use_instance_tunnel est défini sur true, les résultats affichés dans odpscmd et Logview peuvent différer. Fiez-vous au résultat de Logview.
Fonctions associées
JSON_SET est une fonction JSON. Pour plus d'informations, consultez la rubrique Fonctions JSON.