- Catégories :
Fonctions de données semi-structurées et structurées (tableau/objet)
OBJECT_DELETE¶
Renvoie un objet contenant le contenu de l’objet d’entrée (c.-à-d. la source) avec une ou plusieurs clés supprimées.
Syntaxe¶
OBJECT_DELETE( <object>, <key1> [, <key2>, ... ] )
Arguments¶
object
L’objet source.
key1
,key2
Clé à omettre dans l’objet renvoyé.
Notes sur l’utilisation¶
Pour des OBJECTs structurés :
Pour les arguments qui sont des clés, vous devez spécifier des constantes.
Si la clé spécifiée ne fait pas partie de la définition de type OBJECT, l’appel échoue. Par exemple, l’appel suivant échoue, car l’OBJECT ne contient pas la clé spécifiée
zip_code
:SELECT OBJECT_DELETE( {'city':'San Mateo','state':'CA'}::OBJECT(city VARCHAR,state VARCHAR), 'zip_code' );
093201 (23001): Function OBJECT_DELETE: expected structured object to contain field zip_code but it did not.
La fonction renvoie un OBJECT structuré. Le type de l’OBJECT exclut la clé supprimée. Supposons, par exemple, que vous supprimiez la clé
city
:SELECT OBJECT_DELETE( {'city':'San Mateo','state':'CA'}::OBJECT(city VARCHAR,state VARCHAR), 'city' ) AS new_object, SYSTEM$TYPE_OF(new_object);
La fonction renvoie un OBJECT du type
OBJECT(state VARCHAR)
, qui ne comprend pas la clécity
.+-----------------+--------------------------------------+ | NEW_OBJECT | SYSTEM$TYPEOF(NEW_OBJECT) | |-----------------+--------------------------------------| | { | OBJECT(state VARCHAR(16777216))[LOB] | | "state": "CA" | | | } | | +-----------------+--------------------------------------+
Si la fonction supprime toutes les clés de l’objet, elle renvoie un OBJECT structuré vide du type OBJECT().
SELECT OBJECT_DELETE( {'state':'CA'}::OBJECT(state VARCHAR), 'state' ) AS new_object, SYSTEM$TYPEOF(new_object);
+------------+---------------------------+ | NEW_OBJECT | SYSTEM$TYPEOF(NEW_OBJECT) | |------------+---------------------------| | {} | OBJECT()[LOB] | +------------+---------------------------+
Lorsque le type d’un OBJECT structuré comprend des paires clé-valeur, les noms et les types de ces paires sont inclus entre parenthèses dans le type (par exemple, OBJECT(ville VARCHAR)). Étant donné qu’un OBJECT structuré vide ne contient aucune paire clé-valeur, les parenthèses sont vides.
Exemples¶
SELECT OBJECT_DELETE(OBJECT_CONSTRUCT('a', 1, 'b', 2, 'c', 3), 'a', 'b'); -------------------------------------------------------------------+ OBJECT_DELETE(OBJECT_CONSTRUCT('A', 1, 'B', 2, 'C', 3), 'A', 'B') | -------------------------------------------------------------------+ { | "c": 3 | } | -------------------------------------------------------------------+