JSON_UPDATE
Die Funktion JSON_UPDATE erstellt ein neues JSON-Objekt aus einem vorhandenen JSON-Objekt, indem der mithilfe eines SQL/JSON-Pfadausdrucks gefundene Wert geändert oder gelöscht wird.
- JSON-Ausdruck
- Ein Ausdruck, der ein integrierter Zeichenfolgedatentyp ist. Wenn ein Zeichen-oder Grafikwert zurückgegeben wird, muss er ein ordnungsgemäß formatiertes JSON-Objekt enthalten. Wenn ein binärer Wert zurückgegeben wird, muss er die BSON-Darstellung eines JSON-Objekts enthalten.
- Operation
- Ein Ausdruck, der ein integrierter Zeichen-oder Grafikzeichenfolgedatentyp ist.
- Der Wert SET gibt an, dass der vorhandene Wert bei sql-json-pfadausdruck durch neuer_wertersetzt werden muss.
- Der Wert REMOVE gibt an, dass der durch sql-json-pfadausdruck angegebene Schlüssel und der zugehörige Wert entfernt werden sollen.
- sql-json-pfadausdruck
- Ein Zeichen-oder Grafikzeichenfolgeausdruck, der als SQL/JSON-Pfadausdruck interpretiert wird, der zum Suchen des zu aktualisierenden oder zu entfernenden Elements verwendet wird. Der JSON-Standardpfadmodus ist strict. Der Modus lax ist nicht zulässig. Ein neuer Schlüssel oder Feldgruppenindex kann nur für die SET-Operation verwendet werden, wenn das übergeordnete Element des Schlüssels oder Feldgruppenindex in JSON-Ausdruckvorhanden ist. Informationen über den Inhalt eines SQL/JSON-Pfadausdrucks finden Sie unter sql-json-path-expression.
- neuwert
- Ein Zeichen-oder Grafikzeichenfolgeausdruck, der den JSON-Wert angibt, der aktualisiert oder in das JSON-Objekt eingefügt werden soll. Wenn der angegebene Wert kein gültiger JSON-Wert ist, wird er in eine JSON-Zeichenfolge geändert.
- Wenn ein Wert im angegebenen sql-json-pfadausdruckvorhanden ist, wird der Wert durch den neuen ersetzt.
- Wenn im angegebenen sql-json-pfadausdruckkein Wert vorhanden ist, wird ein neuer Wert hinzugefügt.
- Wenn sql-json-pfadausdruck einen Schlüssel angibt, werden der Schlüssel und der Wert entfernt.
- Wenn sql-json-path-expression ein Array-Element angibt, wird das durch sql-json-path-expression angegebene Array-Element entfernt.
Der Datentyp des Ergebnisses ist CLOB (2G) CCSID 1208, wenn JSON-Ausdruck Zeichen-oder Grafikdaten ist. Der Datentyp des Ergebnisses ist BLOB (2G), wenn JSON-Ausdruck binäre Daten ist. Wenn ein BLOB zurückgegeben wird, enthält es die BSON-Darstellung eines JSON-Dokuments.
Das Ergebnis kann null sein. Wenn das erste Argument null ist, ist das Ergebnis der Nullwert.
Beispiel
CREATE TABLE SANDBOX (DATA VARCHAR(1000) CCSID 1208)
INSERT INTO SANDBOX VALUES ('{"phone":[1111,2222,3333]}')- Um dem JSON-Objekt einen neuen Eintrag lastname hinzuzufügen, geben Sie einen Pfad an, der den neuen Schlüssel und den neuen Wert enthält.
Das Ergebnis ist das folgende aktualisierte JSON-Objekt:UPDATE SANDBOX SET DATA = JSON_UPDATE(DATA, 'SET', '$.lastname', 'HAAS'){"phone":[1111,2222,3333],"lastname":"HAAS"}
- Um den Nachnamen von HAAS in LEE zu aktualisieren, geben Sie den Pfad zum Element lastname an.
Das Ergebnis ist das folgende aktualisierte JSON-Objekt:UPDATE SANDBOX SET DATA = JSON_UPDATE(DATA, 'SET', '$.lastname', 'LEE'){"phone":[1111,2222,3333],"lastname":"LEE"}
- Um den zweiten Eintrag im Array zu aktualisieren, geben Sie den entsprechenden Index im Array an.
Das Ergebnis ist das folgende aktualisierte JSON-Objekt:UPDATE SANDBOX SET DATA = JSON_UPDATE(DATA, 'SET', '$.phone[1]', '9999'){"phone":[1111,9999,3333],"lastname":"LEE"}
- Wenn beim Festlegen eines Array-Eintrags der Array-Index größer als die Array-Größe ist, wird der Wert am Ende des Arrays hinzugefügt.
Das Ergebnis ist das folgende aktualisierte JSON-Objekt:UPDATE SANDBOX SET DATA = JSON_UPDATE(DATA, 'SET', '$.phone[7]', '7777'){"phone":[1111,9999,3333,7777],"lastname":"LEE"}
- Um den ersten Eintrag des Telefonbereichs auf null zu setzen, kann eine der folgenden Optionen verwendet werden:
Das Ergebnis ist das folgende aktualisierte JSON-Objekt:UPDATE SANDBOX SET DATA = JSON_UPDATE(DATA, 'SET', '$.phone[0]', NULL) UPDATE SANDBOX SET DATA = JSON_UPDATE(DATA, 'SET', '$.phone[0]', 'null'){"phone":[null,9999,3333,7777],"lastname":"LEE"}
- Verwenden Sie zum Löschen des lastname -Schlüssels und -Werts aus dem JSON-Objekt die Option REMOVE.
Das Ergebnis ist das folgende aktualisierte JSON-Objekt:UPDATE SANDBOX SET DATA = JSON_UPDATE(DATA, 'REMOVE', '$.lastname'){"phone":[null,9999,3333,7777]}
- Um den ersten Eintrag aus dem Array phones zu entfernen, geben Sie den Feldgruppenindex an.
Das Ergebnis ist das folgende aktualisierte JSON-Objekt:UPDATE SANDBOX SET DATA = JSON_UPDATE(DATA, 'REMOVE', '$.phone[0]'){"phone":[null,3333,7777]}
