Funzione JSON_EXTRACT_ARRAY_ELEMENT_TEXT - Amazon Redshift

Amazon Redshift non supporterà più la creazione di nuove UDF Python a partire dal 1º novembre 2025. Se desideri utilizzare le UDF Python, creale prima di tale data. Le UDF Python esistenti continueranno a funzionare normalmente. Per ulteriori informazioni, consulta il post del blog.

Funzione JSON_EXTRACT_ARRAY_ELEMENT_TEXT

Nota

JSON_PARSE e le funzioni associate analizzano i valori JSON come SUPER, che Amazon Redshift analizza in modo più efficiente di VARCHAR.

Invece di utilizzare JSON_EXTRACT_ARRAY_ELEMENT_TEXT, consigliamo di analizzare le stringhe JSON utilizzando Funzione JSON_PARSE per ottenere un valore SUPER. Quindi esegui query sull’elemento desiderato con il relativo indice di array, utilizzando la sintassi value[element position]. Per ulteriori informazioni sull’esecuzione di query sugli elementi dell’array nei valori SUPER, consulta Query sui dati semistrutturati.

JSON_EXTRACT_ARRAY_ELEMENT_TEXT restituisce un elemento di array JSON nell'array più esterno di una stringa JSON, utilizzando un indice con base zero. Il primo elemento in un array è in posizione 0. Se l’indice è negativo o fuori intervallo, JSON_EXTRACT_ARRAY_ELEMENT_TEXT restituisce NULL. Se l'argomento null_if_invalid è impostato su TRUE e la stringa JSON non è valida, la funzione restituisce NULL invece di restituire un errore.

Per ulteriori informazioni, consulta Funzioni JSON.

Sintassi

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

Argomenti

json_string

Una stringa JSON correttamente formattata.

pos

Un INTEGER che rappresenta l'indice dell'elemento array da restituire, utilizzando un indice di array con base zero.

null_if_invalid

(Facoltativo) Un valore BOOLEAN che specifica se restituire NULL se la stringa JSON di input non è valida, invece di restituire un errore. Per restituire NULL se JSON non è valido, specifica true (t). Per restituire un errore se JSON non è valido, specificare false (f). Il valore predefinito è false.

Tipo restituito

VARCHAR

Una stringa VARCHAR che rappresenta l'elemento dell'array JSON a cui fa riferimento pos.

Esempi

Per restituire un elemento di array alla posizione 2, che è il terzo elemento di un indice di array a base zero, utilizza l'esempio seguente.

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

Per restituire un errore poiché JSON non è valido, utilizza l'esempio seguente.

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,]]]

Per impostare null_if_invalid su true, in modo che l'istruzione restituisca NULL invece di restituire un errore di formato JSON non valido, utilizza l'esempio seguente.

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

Considera le seguenti istruzioni di esempio. Se la stringa JSON fornita o l’indice è NULL, JSON_EXTRACT_ARRAY_ELEMENT_TEXT restituisce NULL, indipendentemente dal valore di qualsiasi altro parametro.

--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

Considera le seguenti istruzioni di esempio. Quando null_if_invalid è TRUE, JSON_EXTRACT_ARRAY_ELEMENT_TEXT restituisce NULL quando json_string è JSON non valido. Se null_if_invalid è FALSE o non è impostato, la funzione restituisce un errore quando json_string non è valido.

--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

Considera l’esempio seguente, dove json_string è JSON valido e pos fa riferimento a un valore JSON null. In questo caso JSON_EXTRACT_ARRAY_ELEMENT_TEXT restituisce NULL, indipendentemente dal valore di null_if_invalid.

--Statement selecting a null value. SELECT json_extract_array_element_text('[null]', 0); json_extract_array_element_text ---------------------------------- NULL