- Kategorien:
Funktionen für semistrukturierte und strukturierte Daten (Zuordnung/Map)
MAP_DELETE¶
Gibt ein MAP-Objekt zurück, das auf einem vorhandenen MAP-Objekt basiert, wobei ein oder mehrere Schlüssel entfernt werden.
Syntax¶
MAP_DELETE( <map>, <key1> [, <key2>, ... ] )
Argumente¶
map
Die Zuordnung, die den zu entfernenden Schlüssel enthält.
keyN
Schlüssel, der aus der zurückgegebenen Zuordnung weggelassen werden soll.
Rückgabewerte¶
Gibt ein MAP-Objekt zurück, das den Inhalt der Eingabe-Zuordnung (Quellobjekt) enthält, wobei ein oder mehrere Schlüssel entfernt wurden.
Nutzungshinweise¶
Der Typ des Schlüsselausdrucks muss mit dem Typ des Schlüssels der Zuordnung übereinstimmen. Wenn der Typ VARCHAR ist, können die Typen unterschiedlich lang sein.
Schlüsselwerte, die nicht in der Zuordnung enthalten sind, werden ignoriert.
Beispiele¶
Entfernen von zwei Schlüssel-Wert-Paaren aus einer Zuordnung mit drei Schlüssel-Wert-Paaren:
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 |
| } |
+--------------------------------------------------------------+
Erstellen Sie eine temporäre Tabelle, die MAP-Werte enthält:
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';
Fragen Sie die Tabelle ab, um die Daten anzuzeigen:
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" | ] | | | | | |
| | | } | | | | | | |
+----+---------------------+----------------------+--------------+----------+---------+-----------------+----------+----------+
Entfernen Sie die Schlüssel in den Spalten del_key1
und del_key2
aus den MAP-Werten in der attrs
-Spalte:
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" |
| | } |
+----+---------------------+