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
INTEGERche rappresenta l'indice dell'elemento array da restituire, utilizzando un indice di array con base zero.
- null_if_invalid
-
(Facoltativo) Un valore
BOOLEANche specifica se restituireNULLse la stringa JSON di input non è valida, invece di restituire un errore. Per restituireNULLse JSON non è valido, specificatrue(t). Per restituire un errore se JSON non è valido, specificarefalse(f). Il valore predefinito èfalse.
Tipo restituito
VARCHAR-
Una stringa
VARCHARche 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