Catégories :

Fonctions de données semi-structurées (tableau/objet)

OBJECT_INSERT

Renvoie un objet constitué de l’objet de l’entrée ainsi que d’une nouvelle paire clé-valeur insérée (ou une clé existante mise à jour avec une nouvelle valeur).

Syntaxe

OBJECT_INSERT( <object> , <key> , <value> [ , <updateFlag> ] )

Arguments

Obligatoire :

objet

L’objet source dans lequel la nouvelle paire clé-valeur est insérée.

clé

La nouvelle clé à insérer dans l’objet. Doit être différente de toutes les clés existantes dans l’objet, à moins que indicateurMiseàjour ne soit défini sur TRUE.

valeur

La valeur associée à la clé.

Facultatif :

IndicateurMiseàjour

Indicateur booléen qui, lorsqu’il est défini sur TRUE, spécifie que la valeur d’entrée est utilisée pour mettre à jour / remplacer une clé existante dans l’objet, plutôt que d’insérer une nouvelle paire clé-valeur.

La valeur par défaut est FALSE.

Notes sur l’utilisation

  • La fonction prend en charge les valeurs JSON NULL, mais pas les valeurs ni les clés SQL NULL :

    • Si clé est une chaîne autre que NULL et que valeur est un JSON NULL (par exemple, PARSE_JSON('NULL')), la paire clé-valeur est insérée dans l’objet renvoyé.

    • Si clé ou valeur est un SQL NULL, la paire clé-valeur est omise de l’objet renvoyé.

  • Si l’argument facultatif IndicateurMiseàjour est défini sur TRUE, l’argument clé entré existant est mis à jour avec l’argument valeur entré. Si IndicateurMiseàjour est omis ou défini sur FALSE, l’appel de cette fonction avec une clé d’entrée déjà présente dans l’objet génère une erreur.

  • Si l’indicateur de mise à jour est défini sur true, mais que la clé correspondante n’existe pas déjà dans l’objet, la paire clé/valeur est ajoutée.

Exemples

Insérez une troisième paire clé-valeur dans un objet contenant deux paires clé-valeur :

SELECT OBJECT_INSERT(OBJECT_CONSTRUCT('a',1,'b',2),'c',3);

----------------------------------------------------+
 OBJECT_INSERT(OBJECT_CONSTRUCT('A',1,'B',2),'C',3) |
----------------------------------------------------+
 {                                                  |
   "a": 1,                                          |
   "b": 2,                                          |
   "c": 3                                           |
 }                                                  |
----------------------------------------------------+

Insérez deux nouvelles paires clé-valeur, tout en omettant une paire clé-valeur, dans un objet vide :

  • Key_One comprend une valeur JSON NULL.

  • Key_Two comprend une valeur SQL NULL et est donc omis.

  • Key_Three consiste en une chaîne de caractères contenant « null ».

SELECT
  OBJECT_INSERT(OBJECT_INSERT(OBJECT_INSERT(OBJECT_CONSTRUCT(), 'Key_One', PARSE_JSON('NULL')), 'Key_Two', NULL), 'Key_Three', 'null')
  AS obj;

-----------------------+
          OBJ          |
-----------------------+
 {                     |
   "Key_One": null,    |
   "Key_Three": "null" |
 }                     |
-----------------------+

Mettre à jour une paire clé-valeur existante ("k1": 100) avec une nouvelle valeur ("string-value") :

SELECT OBJECT_INSERT(OBJECT_INSERT(OBJECT_CONSTRUCT(),'k1', 100),'k1','string-value', TRUE) AS obj;

------------------------+
          OBJ           |
------------------------+
 {                      |
   "k1": "string-value" |
 }                      |
------------------------+