Amazon Redshift 自 2025 年 11 月 1 日起不再支援建立新的 Python UDF。如果您想要使用 Python UDF,請在該日期之前建立 UDF。現有 Python UDF 將繼續正常運作。如需詳細資訊,請參閱部落格文章
JSON_EXTRACT_ARRAY_ELEMENT_TEXT 函數
注意
JSON_PARSE 及其相關聯的函式會將 JSON 值剖析為 SUPER,Amazon Redshift 會剖析這類值的效率比剖析 VARCHAR 更高。
建議您使用 JSON_PARSE 函數 剖析 JSON 字串來取得 SUPER 值,而不要使用 JSON_EXTRACT_ARRAY_ELEMENT_TEXT。然後使用陣列索引與 value[element position] 語法查詢您要的元素。如需在 SUPER 值中查詢陣列元素的詳細資訊,請前往 查詢半結構化資料。
JSON_EXTRACT_ARRAY_ELEMENT_TEXT 函數傳回 JSON 字串最外圍陣列中的 JSON 陣列元素 (採用以零開始的索引)。陣列的第一個元素在位置 0。如果索引是負數或超出邊界,JSON_EXTRACT_ARRAY_ELEMENT_TEXT 會傳回 NULL。如果 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,請指定true(t)。若要在 JSON 無效時傳回錯誤,請指定false(f)。預設值為false。
傳回類型
VARCHAR-
VARCHAR字串,代表 pos 所參考的 JSON 陣列元素。
範例
若要傳回位置 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,以便在 JSON 無效時,陳述式傳回 NULL 而非傳回錯誤,請使用下列範例。
SELECT JSON_EXTRACT_ARRAY_ELEMENT_TEXT('["a",["b",1,["c",2,3,null,]]]',1,true);+---------------------------------+ | json_extract_array_element_text | +---------------------------------+ | NULL | +---------------------------------+
請參考下列範例陳述式。如果提供的 JSON 字串或索引為 NULL,無論任何其他參數的值為何,JSON_EXTRACT_ARRAY_ELEMENT_TEXT 都會傳回 NULL。
--Statement where json_string is NULL. SELECT json_extract_array_element_text(NULL, 0)json_extract_array_element_text --------------------------------- NULL--Statement where pos is NULL and json_string is invalid JSON. SELECT json_extract_array_element_text('invalid_json', NULL);json_extract_array_element_text --------------------------------- NULL--Statement where json_string is NULL and null_if_invalid is FALSE. SELECT json_extract_array_element_text(NULL, 0, FALSE);json_extract_array_element_text --------------------------------- NULL
請參考下列範例陳述式。當 null_if_invalid 為 TRUE 時,JSON_EXTRACT_ARRAY_ELEMENT_TEXT 會在 json_string 為無效 JSON 的情況下傳回 NULL。如果 null_if_invalid 為 FALSE 或未設定,則函式會在 json_string 無效時傳回錯誤。
--Statement with invalid JSON where null_if_invalid is TRUE. SELECT json_extract_array_element_text('invalid_json', 0, TRUE);json_extract_array_element_text --------------------------------- NULL--Statement with invalid JSON where null_if_invalid is FALSE. SELECT json_extract_array_element_text('invalid_json', 0);ERROR: JSON parsing error
請參考下列範例,其中 json_string 是有效的 JSON,而 pos 參考 JSON null 值。在此情況下,無論 null_if_invalid 的值為何,JSON_EXTRACT_ARRAY_ELEMENT_TEXT 都會傳回 NULL。
--Statement selecting a null value. SELECT json_extract_array_element_text('[null]', 0); json_extract_array_element_text ---------------------------------- NULL