JSON_VALUE Skalarfunktion

Die Funktion JSON_VALUE gibt einen skalaren SQL-Wert aus JSON-Text unter Verwendung eines SQL/JSON-Pfadausdrucks zurück.

Read syntax diagramSkip visual syntax diagramJSON_VALUE(JSON-expression FORMAT JSONFORMAT BSON,sql-json-path-expression ASpath-nameRETURNING CLOB(2G)RETURNINGdata-type NULL ON EMPTYERRORDEFAULTdefault-expressionON EMPTY NULL ON ERRORERRORDEFAULTdefault-expressionON ERROR)
data-type
Read syntax diagramSkip visual syntax diagramSMALLINTINTEGERINTBIGINTDECIMALDECNUMERICNUM(5,0)( precision-integer,0, scale-integer)FLOAT(53)( integer)REALDOUBLEPRECISIONDECFLOAT(34)(16)CHARACTERCHAR(1)( integer)CHARACTERCHARVARYINGVARCHAR( integer)CHARACTERCHARLARGE OBJECTCLOB(1M)( integerKMG)BINARY VARYINGVARBINARY(integer)BINARY LARGE OBJECTBLOB(1M)( integerKMG)DATETIMETIMESTAMP(6)(integer)

Obwohl das Schema für diese Funktion SYSIBM ist, kann die Funktion nicht als qualifizierter Name angegeben werden.

JSON-Ausdruck
Ein Ausdruck, der einen Wert zurückgibt, der ein integrierter Zeichenfolgedatentyp ist, außer den folgenden Datentypen (SQLSTATE 42815):
  • GRAPHIC
  • VARGRAPHIC
  • DBCLOB
  • BINARY
  • CHAR FOR BIT DATA
  • VARCHAR FOR BIT DATA
  • Ein benutzerdefinierter Typ, der aus einem der zuvor aufgelisteten Datentypen stammt.

Wenn ein Zeichenwert zurückgegeben wird, muss er korrekt formatierte JSON-Daten enthalten (SQLSTATE 22032). Wenn ein Binärdatentyp zurückgegeben wird, wird er gemäß der expliziten oder impliziten Klausel FORMAT interpretiert.

JSON FORMATIEREN
JSON-Ausdruck ist als JSON-Daten formatiert.

Wenn json-ausdruck ein Zeichenfolgedatentyp ist, wird er als JSON-Daten behandelt.

Wenn json-ausdruck ein binärer Zeichenfolgedatentyp ist, wird er als UTF-8 -Daten interpretiert.

BSON FORMAT
Gibt an, dass json-ausdruck als BSON-Darstellung von JSON-Daten formatiert wird (SQLSTATE 22032). JSON-Ausdruck muss ein Binärzeichenfolgedatentyp sein (SQLSTATE 42815).
sql-json-pfadausdruck
Ein Ausdruck, der einen Wert zurückgibt, der ein integrierter Zeichenfolgedatentyp ist. Die Zeichenfolge wird als SQL/JSON-Pfadausdruck interpretiert und verwendet, um einen JSON-Wert in den JSON-Daten zu lokalisieren, die durch JSON-Ausdruckangegeben werden. Weitere Informationen zum SQL/JSON-Pfadausdruck finden Sie unter sql-json-pfadausdruck.
AS pfadname
Gibt einen Namen an, der zum Identifizieren von sql-json-pfadausdruckverwendet wird.
RETURNING datentyp
Gibt den Datentyp des Ergebnisses an Der Standardwert ist CLOB (2 GB). Die Standardcodierung, die verwendet wird, wenn der Datentyp eine Binärzeichenfolge ist, ist UTF-8.

Eine Beschreibung der integrierten Datentypen finden Sie unter Anweisung CREATE TABLE .

BEI LEERER
Gibt das Verhalten an, wenn eine leere Sequenz von sql-json-pfadausdruckzurückgegeben wird.
NULL AUF LEER
Ein Nullwert wird zurückgemeldet. Diese Klausel ist der Standardwert.
FEHLER BEI LEERER
Es wird ein Fehler zurückgegeben.
DEFAULT standardausdruck ON EMPTY
Der durch standardausdruck angegebene Wert wird zurückgegeben. Der Datentyp von standardausdruck muss mit dem zurückgegebenen Datentyp identisch sein (SQLSTATE-Wert 42815).
Bei Fehler
Gibt das Verhalten an, wenn ein Fehler von JSON_VALUE festgestellt wird
NULL BEI FEHLER
Ein Nullwert wird zurückgemeldet. Diese Klausel ist der Standardwert.
FEHLER BEI FEHLER
Es wird ein Fehler zurückgegeben.
DEFAULT standardausdruck ON ERROR
Der durch standardausdruck angegebene Wert wird zurückgegeben. Der Datentyp von standardausdruck muss mit dem zurückgegebenen Datentyp identisch sein (SQLSTATE-Wert 42815).

Das Ergebnis kann null sein. Wenn json-ausdruck null ist, ist das Ergebnis der Nullwert.

Hinweise

  • Wenn Parametermarken nicht explizit in einen unterstützten Datentyp umgesetzt werden, wird ein Fehler zurückgegeben (SQLSTATE 42815)

Beispiele

  1. Gibt einen Wert aus JSON-Text als ganze Zahl zurück.
    VALUES (JSON_VALUE('{"id":"987"}', 'strict $.id' RETURNING INTEGER));
    

    Das Ergebnis ist 987.

  2. Ruft den Wert für das Bonusfeld aus JSON-Text ab. Gibt sie als ganze Zahl zurück.
    VALUES (JSON_VALUE('{"pay":{"salary":94250.00,"bonus":800.00,"comm":3300.00}}', 
                       'strict $.pay.bonus' RETURNING INTEGER));
    
    Das Ergebnis ist 800.