JSON_EXTRACT_ARRAY_ELEMENT_ TEXT函數 - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

JSON_EXTRACT_ARRAY_ELEMENT_ TEXT函數

注意

JSON_PARSE 及其相關聯的函數會將值剖析為 SUPER,Amazon Redshift 會比 更有效率地剖析這些JSON值VARCHAR。

建議您使用 剖析JSON字串JSON_PARSE 函數以取得SUPER值TEXT,而不是使用 ARRAY_JSONEXTRACT_ELEMENT__。然後,使用 value[element position] 語法,使用陣列索引查詢您想要的 元素。如需查詢SUPER值中陣列元素的詳細資訊,請前往 查詢半結構化資料

JSON_EXTRACT_ARRAY_ELEMENT_ TEXT函數會使用零索引傳回JSON字串最外部陣列中的JSON陣列元素。陣列的第一個元素在位置 0。如果索引為負或超出範圍,JSON_EXTRACT_ARRAY_ELEMENT_TEXT 會傳回空字串。如果 null_if_invalid 引數設定為 true且JSON字串無效,則函數會傳回 NULL,而不是傳回錯誤。

如需詳細資訊,請參閱JSON 函數

語法

JSON_EXTRACT_ARRAY_ELEMENT_TEXT('json string', pos [, null_if_invalid ] )

引數

json_string

正確格式化的JSON字串。

pos

INTEGER,代表要傳回之陣列元素的索引 (採用以零開始的陣列索引)。

null_if_invalid

(選用) BOOLEAN指定輸入JSON字串無效NULL時是否要傳回的值,而不是傳回錯誤。若要在 JSON 無效NULL時傳回 ,請指定 truet)。若要在 JSON 無效時傳回錯誤,請指定 falsef)。預設值為 false

傳回類型

VARCHAR

代表位置 所參考之JSON陣列元素的VARCHAR字串。

範例

若要傳回位置 2 的陣列元素 (即從零開始之陣列索引的第三個元素),請使用下列範例。

SELECT JSON_EXTRACT_ARRAY_ELEMENT_TEXT('[111,112,113]', 2); +---------------------------------+ | json_extract_array_element_text | +---------------------------------+ | 113 | +---------------------------------+

若要因為 JSON 無效而傳回錯誤,請使用下列範例。

SELECT JSON_EXTRACT_ARRAY_ELEMENT_TEXT('["a",["b",1,["c",2,3,null,]]]',1); ERROR: invalid json array object ["a",["b",1,["c",2,3,null,]]]

若要將 null_if_invalid 設定為 true ,因此陳述式傳回,NULL而不是傳回無效 的錯誤JSON,請使用下列範例。

SELECT JSON_EXTRACT_ARRAY_ELEMENT_TEXT('["a",["b",1,["c",2,3,null,]]]',1,true); +---------------------------------+ | json_extract_array_element_text | +---------------------------------+ | NULL | +---------------------------------+