- Kategorien:
Funktionen für semistrukturierte und strukturierte Daten (Zuordnung/Map)
MAP_INSERT¶
Gibt ein neues MAP-Objekt zurück, das aus dem Eingabe-MAP-Objekt besteht, in das ein neues Schlüssel-Wert-Paar eingefügt wurde (oder ein bestehender Schlüssel wurde mit einem neuen Wert aktualisiert).
Syntax¶
MAP_INSERT( <map> , <key> , <value> [ , <updateFlag> ] )
Argumente¶
map
Das Zuordnungs-Quellobjekt, in das das neue Schlüssel-Wert-Paar eingefügt wird.
key
Der neue Schlüssel, der in die Zuordnung eingefügt werden soll. Muss sich von allen in der Zuordnung vorhandenen Schlüsseln unterscheiden, es sei denn,
updateFlag
ist auf TRUE gesetzt.value
Der dem Schlüssel zugeordnete Wert.
Optional
updateFlag
Ein Boolesches Flag, das bei der Einstellung TRUE angibt, dass der Eingabewert zum Aktualisieren/Überschreiben eines vorhandenen Schlüssels im Zuordnungsobjekt verwendet werden soll, anstatt ein neues Schlüssel-Wert-Paar einzufügen.
Der Standardwert ist FALSE.
Rückgabewerte¶
Gibt ein MAP-Objekt zurück, das aus dem Eingabe-MAP-Objekt, in das ein neues Schlüssel-Wert-Paar eingefügt wurde oder ein bestehender Schlüssel wurde mit einem neuen Wert aktualisiert.
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.
Die Funktion unterstützt JSON NULL-Werte, aber keine SQL NULL-Werte oder -Schlüssel:
Wenn der Schlüssel
key
eine beliebige andere Zeichenfolge als NULL ist und der Wertvalue
ein JSON-NULL-Wert ist (z. B. PARSE_JSON(‚NULL‘)), wird das Schlüssel-Wert-Paar in das zurückgegebene Zuordnungsobjekt eingefügt.Wenn der Schlüssel
key
eine beliebige andere Zeichenfolge als NULL ist undvalue
ein SQL-NULL-Wert ist (z. B. NULL), dann wird der in einen JSON-NULL-Wert konvertiert, und das Schlüssel-Wert-Paar in das zurückgegebene Zuordnungsobjekt eingefügt.Wenn
key
ein SQL-NULL-Wert ist, wird das Schlüssel-Wert-Paar aus dem zurückgegebenen Zuordnungsobjekt weggelassen.
Wenn
updateFlag
auf TRUE gesetzt wird, dann wird das bestehende Eingabe-key
-Objekt auf den Eingabewertvalue
aktualisiert. WennupdateFlag
weggelassen oder auf FALSE gesetzt wird und der Eingabeschlüssel bereits in dem Zuordnungsobjekt existiert, wird ein Fehler zurückgegeben.Wenn
updateFlag
auf TRUE gesetzt wird, der entsprechende Schlüssel aber noch nicht im Zuordnungsobjekt vorhanden ist, wird das Schlüssel-Wert-Paar hinzugefügt.
Beispiele¶
Einfügen eines dritten Schlüssel-Wert-Paars in ein Zuordnungsobjekt, das zwei Schlüssel-Wert-Paare enthält:
SELECT MAP_INSERT({'a':1,'b':2}::MAP(VARCHAR,NUMBER),'c',3);
+------------------------------------------------------+
| MAP_INSERT({'A':1,'B':2}::MAP(VARCHAR,NUMBER),'C',3) |
|------------------------------------------------------|
| { |
| "a": 1, |
| "b": 2, |
| "c": 3 |
| } |
+------------------------------------------------------+
Einfügen von zwei neuen Schlüssel-Wert-Paaren in ein leeres Zuordnungsobjekt, wobei ein Schlüssel-Wert-Paar weglassen wird:
Key_One
besteht aus einem JSON NULL-Wert.Key_Two
besteht aus einem SQL-NULL-Wert, der in einen JSON-NULL-Wert konvertiert wird.Key_Three
besteht aus einer Zeichenfolge, die „null“ enthält.
SELECT MAP_INSERT(MAP_INSERT(MAP_INSERT({}::MAP(VARCHAR,VARCHAR),
'Key_One', PARSE_JSON('NULL')), 'Key_Two', NULL), 'Key_Three', 'null');
+---------------------------------------------------------------------------+
| MAP_INSERT(MAP_INSERT(MAP_INSERT({}::MAP(VARCHAR,VARCHAR), |
| 'KEY_ONE', PARSE_JSON('NULL')), 'KEY_TWO', NULL), 'KEY_THREE', 'NULL') |
|---------------------------------------------------------------------------|
| { |
| "Key_One": null, |
| "Key_Three": "null", |
| "Key_Two": null |
| } |
+---------------------------------------------------------------------------+
Aktualisieren eines vorhandenen Schlüssel-Wert-Paares ("k1": 100
) mit einem neuen Wert ("string-value"
):
SELECT MAP_INSERT({'k1':100}::MAP(VARCHAR,VARCHAR), 'k1', 'string-value', TRUE) AS map;
+------------------------+
| MAP |
|------------------------|
| { |
| "k1": "string-value" |
| } |
+------------------------+