- 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 :
object
L’objet source dans lequel la nouvelle paire clé-valeur est insérée.
key
La nouvelle clé à insérer dans l’objet. Doit être différente de toutes les clés existantes dans l’objet, à moins que
updateFlag
ne soit défini sur TRUE.value
La valeur associée à la clé.
Facultatif :
updateFlag
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
key
est une chaîne autre que NULL et quevalue
est un JSON NULL (par exemple,PARSE_JSON('NULL')
), la paire clé-valeur est insérée dans l’objet renvoyé.Si
key
ouvalue
est un SQL NULL, la paire clé-valeur est omise de l’objet renvoyé.
Si l’argument facultatif
updateFlag
est défini sur TRUE, l’argumentkey
entré existant est mis à jour avec l’argumentvalue
entré. SiupdateFlag
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" | } | ------------------------+