JSON_VALUE

JSON_VALUE 函數會使用 SQL/JSON 路徑表示式,從 JSON 文字傳回 SQL 純量值。

讀取語法圖跳過視覺化語法圖JSON_VALUE( JSON 表示式FORMAT JSONFORMAT BSON ,sql-json-path-expression ASpath-name RETURNINGCLOB (2G) CCSID 1208RETURNING資料類型 NULL ON EMPTYERRORDEFAULT預設表示式ON EMPTY NULL ON ERRORERRORDEFAULT預設表示式ON ERROR )
資料類型
讀取語法圖跳過視覺化語法圖SMALLINTINTEGERINTBIGINTDECIMALDECNUMERICNUM(5,0)(整數,0,整數)FLOAT(53)(整數)REALDOUBLEPRECISIONDECFLOAT(34)(16)CHARACTERCHAR(1)(整數)CHARACTERCHARVARYINGVARCHAR(整數)FOR SBCS DATAFOR MIXED DATAccsid 子句CHARACTERCHARLARGE OBJECTCLOB(1M)(整數KMG)FOR SBCS DATAFOR MIXED DATAccsid 子句GRAPHIC(1)(整數)GRAPHIC VARYINGVARGRAPHIC(整數)DBCLOB(1M)(整數KMG)ccsid 子句NATIONAL CHARACTERNATIONAL CHARNCHAR(1)(整數)NATIONAL CHARACTERNATIONAL CHARNCHARVARYINGNVARCHAR(整數)NATIONAL CHARACTERNCHARLARGE OBJECTNCLOB(1M)(整數KMG)正規化子句DATETIME(0)TIMESTAMP(6)(整數)BOOLEAN
ccsid 子句
讀取語法圖跳過視覺化語法圖CCSID整數正規化子句
normalize-clause
讀取語法圖跳過視覺化語法圖NOT NORMALIZEDNORMALIZED
JSON 表示式
傳回內建字串資料類型的值的表示式。 如果傳回字元或圖形值,則必須包含正確格式化的 JSON 資料。 如果它是二進位資料類型,則會根據明確或隱含的 FORMAT 子句來解譯。
如果 JSON 表示式 是 JSON 陣列,則會使用 SYSIBM_ROOT_ARRAY 索引鍵名稱來隱含地包裝它,並將 JSON 表示式 修改為 JSON 物件。 sql-json-path-expression 會隱含地修改,以說明這個額外的索引鍵。
FORMAT JSON 或 FORMAT BSON
指定如何解譯 JSON 表示式
FORMAT JSON
JSON 表示式 包含 JSON 資料。 如果 JSON 表示式 是二進位資料,則資料會解譯為 UTF-8 或 UTF-16。 二進位資料無法使用 EBCDIC CCSID 進行編碼。
FORMAT BSON
JSON 表示式 包含 JSON 資料的 BSON 表示法。 指定 FORMAT BSON 時, JSON 表示式 必須是二進位字串資料類型。
如果未指定 FORMAT 子句,且 JSON 表示式 是字元或圖形字串,則會將 JSON 表示式 視為 JSON。 如果 JSON 表示式 是二進位字串,則會將 JSON 表示式 視為 BSON。
sql-json-path-expression
傳回內建字元或圖形字串資料類型的值的表示式。 字串會解譯為 SQL/JSON 路徑表示式,並用來在 JSON-expression指定的 JSON 資料內尋找 JSON 值。 如果多個值具有相同的索引鍵,則會選取其中一個 JSON 值。
如需 SQL/JSON 路徑表示式內容的相關資訊,請參閱 sql-json-path-expression
AS path-name
指定用來識別 sql-json-path-expression的名稱。
傳回 資料類型
指定結果的資料類型。 對於 CHAR 及 VARCHAR 結果, CCSID 不能是 65535。 以下說明結果資料類型轉換的其他規則: 表 1
預設值是 CLOB (2G) CCSID 1208。
在空的
指定使用 sql-json-path-expression找到空序列時的行為。
空白時為空值
所傳回的為空數。 這是預設值。
空白時發生錯誤
系統會傳回錯誤。
DEFAULT default-expression ON EMPTY
會傳回 default-expression 指定的值。 表示式必須是與結果資料類型相容的指派。
發生錯誤時
指定 JSON_VALUE 發生錯誤時的行為。
錯誤時為空值
所傳回的為空數。 這是預設值。
錯誤時發生錯誤
系統會傳回錯誤。
DEFAULT default-expression ON ERROR
會傳回 default-expression 指定的值。 表示式必須是與結果資料類型相容的指派。

結果可以是空值。 如果 JSON 表示式 是空值,則結果是空值。

範例

  • 從 JSON 文字傳回整數值。
    VALUES (JSON_VALUE('{"id":"987"}', '$.id' RETURNING INTEGER));
    結果為 987。
  • 嘗試從屬於陣列值的 JSON 文字傳回值。 透過傳回預設字串來處理任何錯誤。
    VALUES (JSON_VALUE('{"friends":["John","Lisa"]}', 
                       'strict $.friends' DEFAULT 'Not found' ON ERROR));
    結果是 Not found ,因為對應於 friends 索引鍵的值是陣列,而不是純量值。