- Catégories :
Fonctions de données semi-structurées et structurées (Carte)
MAP_DELETE¶
Renvoie une MAP basée sur une MAP existante avec une ou plusieurs clés supprimées.
Syntaxe¶
MAP_DELETE( <map>, <key1> [, <key2>, ... ] )
Arguments¶
mapLa carte qui contient la clé à supprimer.
keyNLa clé à omettre de la carte renvoyée.
Renvoie¶
Renvoie une MAP qui comporte le contenu de la carte d’entrée (source) avec une ou plusieurs clés supprimées.
Notes sur l’utilisation¶
Le type de l’expression de clé doit correspondre au type de la clé de la carte. Si le type est VARCHAR, les types peuvent être de longueurs différentes.
Les valeurs de clé qui ne sont pas trouvées dans la carte sont ignorées.
Exemples¶
Retirer deux paires clé-valeur d’une carte contenant trois paires clé-valeur :
SELECT MAP_DELETE({'a':1,'b':2,'c':3}::MAP(VARCHAR,NUMBER),'a','b');
+--------------------------------------------------------------+
| MAP_DELETE({'A':1,'B':2,'C':3}::MAP(VARCHAR,NUMBER),'A','B') |
|--------------------------------------------------------------|
| { |
| "c": 3 |
| } |
+--------------------------------------------------------------+
Création d’une table temporaire qui contient des valeurs MAP :
CREATE OR REPLACE TEMP TABLE demo_maps(
id INTEGER,
attrs MAP(VARCHAR, VARCHAR),
defaults MAP(VARCHAR, VARCHAR),
keep_keys ARRAY(VARCHAR),
ins_key VARCHAR,
ins_val VARCHAR,
update_existing BOOLEAN,
del_key1 VARCHAR,
del_key2 VARCHAR);
INSERT INTO demo_maps SELECT
1,
{'color':'red','size':'M','brand':'Acme'}::MAP(VARCHAR, VARCHAR),
{'currency':'USD','size':'L'}::MAP(VARCHAR, VARCHAR),
['color','brand']::ARRAY(VARCHAR),
'material',
'cotton',
TRUE,
'size',
'brand';
INSERT INTO demo_maps SELECT
2,
{'color':'blue','brand':'ZenCo'}::MAP(VARCHAR, VARCHAR),
{'currency':'EUR','size':'M','brand':'ZenCo'}::MAP(VARCHAR, VARCHAR),
['brand','currency']::ARRAY(VARCHAR),
'brand',
'ZC',
FALSE,
'currency',
'material';
Interrogez la table pour afficher les données :
SELECT * FROM demo_maps;
+----+---------------------+----------------------+--------------+----------+---------+-----------------+----------+----------+
| ID | ATTRS | DEFAULTS | KEEP_KEYS | INS_KEY | INS_VAL | UPDATE_EXISTING | DEL_KEY1 | DEL_KEY2 |
|----+---------------------+----------------------+--------------+----------+---------+-----------------+----------+----------|
| 1 | { | { | [ | material | cotton | True | size | brand |
| | "brand": "Acme", | "currency": "USD", | "color", | | | | | |
| | "color": "red", | "size": "L" | "brand" | | | | | |
| | "size": "M" | } | ] | | | | | |
| | } | | | | | | | |
| 2 | { | { | [ | brand | ZC | False | currency | material |
| | "brand": "ZenCo", | "brand": "ZenCo", | "brand", | | | | | |
| | "color": "blue" | "currency": "EUR", | "currency" | | | | | |
| | } | "size": "M" | ] | | | | | |
| | | } | | | | | | |
+----+---------------------+----------------------+--------------+----------+---------+-----------------+----------+----------+
Supprimer les clés dans les colonnes del_key1 et del_key2 des valeurs MAP dans la colonne attrs :
SELECT id, MAP_DELETE(attrs, del_key1, del_key2) AS attrs_after_delete
FROM demo_maps;
+----+---------------------+
| ID | ATTRS_AFTER_DELETE |
|----+---------------------|
| 1 | { |
| | "color": "red" |
| | } |
| 2 | { |
| | "brand": "ZenCo", |
| | "color": "blue" |
| | } |
+----+---------------------+