JSON_ EXTRACT _ _ ARRAY ELEMENT _ TEXT 功能 - Amazon Redshift

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

JSON_ EXTRACT _ _ ARRAY ELEMENT _ TEXT 功能

注意

JSON_ PARSE 及其相關函數將JSON值解析為SUPER,Amazon Redshift 解析的值比. VARCHAR

而不是使用 JSON EXTRACT _ ARRAY _ ELEMENT _ _ _TEXT,我們建議您使用解析JSON字串JSON_ PARSE 函數以取得SUPER值。然後,使用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

(選擇性) 指BOOLEANNULL如果輸入JSON字串無效而不是傳回錯誤,是否傳回錯誤的值。NULL若要在無效JSON時傳回,請指定 true (t)。若要在JSON無效時傳回錯誤,請指定 false (f)。預設值為 false

傳回類型

VARCHAR

表示由 pos 引用的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 | +---------------------------------+