Tous les produits
Search
Centre de documentation

MaxCompute:JSON_SET

Dernière mise à jour :Oct 19, 2026

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);
    Remarque

    Si 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.