Kategorien:

Semistrukturierte Datenfunktionen (Array/Objekt)

OBJECT_INSERT

Gibt ein Objekt zurück, das aus dem Eingabeobjekt mit einem neu eingefügten Schlüssel-Wert-Paar besteht (oder einem bestehenden Schlüssel, der mit einem neuen Wert aktualisiert wurde).

Syntax

OBJECT_INSERT( <object> , <key> , <value> [ , <updateFlag> ] )

Argumente

Benötigt:

Objekt

Das Quellobjekt, in das das neue Schlüssel-Wert-Paar eingefügt wird.

Schlüssel

Der neue Schlüssel, der in das Objekt eingefügt werden soll. Muss sich von allen im Objekt vorhandenen Schlüsseln unterscheiden, es sei denn, Aktualisierungsflag ist auf TRUE gesetzt.

Wert

Der dem Schlüssel zugeordnete Wert.

Optional:

Aktualisierungsflag

Boolesches Flag, das bei der Einstellung TRUE angibt, dass der Eingabewert zum Aktualisieren/Überschreiben eines vorhandenen Schlüssels im Objekt verwendet werden soll, anstatt ein neues Schlüssel-Wert-Paar einzufügen.

Der Standardwert ist FALSE.

Nutzungshinweise

  • Die Funktion unterstützt JSON NULL-Werte, aber keine SQL NULL-Werte oder -Schlüssel:

    • Wenn Schlüssel eine beliebige andere Zeichenfolge als NULL ist und Wert ein JSON NULL-Wert ist (z. B. PARSE_JSON('NULL')), wird das Schlüssel-Wert-Paar in das zurückgegebene Objekt eingefügt.

    • Wenn entweder Schlüssel oder Wert ein SQL NULL-Wert ist, wird das Schlüssel-Wert-Paar aus dem zurückgegebenen Objekt weggelassen.

  • Wenn das optionale Aktualisierungsflag-Argument auf TRUE gesetzt ist, wird der vorhandene Eingabeschlüssel Schlüssel auf den Eingabewert Wert aktualisiert. Wenn Aktualisierungsflag weggelassen oder auf FALSE gesetzt wird, führt das Aufrufen dieser Funktion mit einem Eingabeschlüssel, der bereits im Objekt vorhanden ist, zu einem Fehler.

  • Wenn das Aktualisierungsflag auf „TRUE“ gesetzt ist, aber der entsprechende Schlüssel noch nicht im Objekt vorhanden ist, wird das Schlüssel/Wert-Paar hinzugefügt.

Beispiele

Einfügen eines dritten Schlüssel-Wert-Paars in ein Objekt, das zwei Schlüssel-Wert-Paare enthält:

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                                           |
 }                                                  |
----------------------------------------------------+

Einfügen von zwei neuen Schlüssel-Wert-Paaren in ein leeres Objekt, wobei ein Schlüssel-Wert-Paar weglassen wird:

  • Key_One besteht aus einem JSON NULL-Wert.

  • Key_Two besteht aus einem SQL NULL-Wert und wird daher weggelassen.

  • Key_Three besteht aus einer Zeichenfolge, die „null“ enthält.

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" |
 }                     |
-----------------------+

Aktualisieren Sie ein vorhandenes Schlüssel-Wert-Paar ("k1": 100) mit einem neuen Wert ("string-value"):

SELECT OBJECT_INSERT(OBJECT_INSERT(OBJECT_CONSTRUCT(),'k1', 100),'k1','string-value', TRUE) AS obj;

------------------------+
          OBJ           |
------------------------+
 {                      |
   "k1": "string-value" |
 }                      |
------------------------+