Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
JSONPATHTEXTFunzione _ _ _ EXTRACT
Nota
JSON_ PARSE e le funzioni associate analizzano JSON i valori comeSUPER, cosa che Amazon Redshift analizza in modo più efficiente di. VARCHAR
Invece di usare JSON _ _ EXTRACT PATH _TEXT, ti consigliamo di analizzare le JSON stringhe usando per ottenere un valore. JSONPARSEfunzione _ SUPER Quindi, interroga l'elemento desiderato utilizzando la value.attribute
sintassi. Per ulteriori informazioni sull'interrogazione degli elementi dell'array nei SUPER valori, vai a. Query sui dati semistrutturati
La TEXT funzione JSON _ EXTRACT _ PATH _ restituisce il valore per la coppia chiave-valore a cui fa riferimento una serie di elementi del percorso in una stringa. JSON Il JSON percorso può essere annidato fino a cinque livelli di profondità. Gli elementi del percorso fanno distinzione tra maiuscole e minuscole. Se un elemento del percorso non esiste nella JSON stringa, TEXT restituisce JSON NULL
_ EXTRACT _ PATH _.
Se l'argomento null_if_invalid è impostato su true
e la JSON stringa non è valida, la funzione restituisce invece di restituire un errore. NULL
JSON_ _ EXTRACT _ PATH ha una dimensione dei dati massima di 64 KB. TEXT Pertanto, se un JSON record è più grande di 64 KB, l'elaborazione con JSON _ _ EXTRACT PATH _ TEXT genera un errore.
Per informazioni sulle JSON funzioni aggiuntive, vedereJSONfunzioni. Per ulteriori informazioni sull'utilizzo diJSON, vedereCOPYdal formato JSON.
Sintassi
JSON_EXTRACT_PATH_TEXT('json_string', 'path_elem' [,'path_elem'[, …] ] [, null_if_invalid ] )
Argomenti
- json_string
-
Una JSON stringa formattata correttamente.
- path_elem
-
Un elemento di percorso in una JSON stringa. Un elemento di percorso è obbligatorio. È possibile specificare elementi aggiuntivi del percorso, fino a cinque livelli di profondità.
- null_if_invalid
-
(Facoltativo) Un
BOOLEAN
valore che specifica se restituireNULL
se la JSON stringa di input non è valida anziché restituire un errore. Per restituireNULL
se non JSON è valido, specificaretrue
().t
Per restituire un errore se non JSON è valido, specificarefalse
()f
. Il valore predefinito èfalse
.
In una JSON stringa, Amazon Redshift riconosce \n
come carattere di nuova riga e \t
come carattere di tabulazione. Per caricare una barra rovesciata, crea una sequenza di escape con una barra rovesciata (\\
). Per ulteriori informazioni, consultare Personaggi di escape in JSON.
Tipo restituito
VARCHAR
-
Una
VARCHAR
stringa che rappresenta il JSON valore a cui fanno riferimento gli elementi del percorso.
Esempi
Per restituire il valore per il percorso 'f4', 'f6'
, utilizza l'esempio seguente.
SELECT JSON_EXTRACT_PATH_TEXT('{"f2":{"f3":1},"f4":{"f5":99,"f6":"star"}}','f4', 'f6');
+------------------------+ | json_extract_path_text | +------------------------+ | star | +------------------------+
Per restituire un errore perché non JSON è valido, utilizzate l'esempio seguente.
SELECT JSON_EXTRACT_PATH_TEXT('{"f2":{"f3":1},"f4":{"f5":99,"f6":"star"}','f4', 'f6');
ERROR: invalid json object {"f2":{"f3":1},"f4":{"f5":99,"f6":"star"}
Per impostare null_if_invalid su true, in modo che l'istruzione restituisca NULL
invalid JSON anziché restituire un errore, utilizzate l'esempio seguente.
SELECT JSON_EXTRACT_PATH_TEXT('{"f2":{"f3":1},"f4":{"f5":99,"f6":"star"}','f4', 'f6',true);
+------------------------+ | json_extract_path_text | +------------------------+ | NULL | +------------------------+
Per restituire il valore per il percorso.'farm', 'barn', 'color'
, dove il valore recuperato si trova al terzo livello, utilizza l'esempio seguente. Questo esempio è formattato con uno strumento JSON lint, per facilitarne la lettura.
SELECT JSON_EXTRACT_PATH_TEXT('{ "farm": { "barn": { "color": "red", "feed stocked": true } } }', 'farm', 'barn', 'color');
+------------------------+ | json_extract_path_text | +------------------------+ | red | +------------------------+
Per restituire NULL
perché l'elemento 'color'
risulta mancante, utilizza l'esempio seguente. Questo esempio è formattato con uno JSON strumento lint.
SELECT JSON_EXTRACT_PATH_TEXT('{ "farm": { "barn": {} } }', 'farm', 'barn', 'color');
+------------------------+ | json_extract_path_text | +------------------------+ | NULL | +------------------------+
Se JSON è valido, viene restituito il tentativo di estrarre un elemento mancante. NULL
Per restituire il valore per il percorso 'house', 'appliances', 'washing machine', 'brand'
, utilizza l'esempio seguente.
SELECT JSON_EXTRACT_PATH_TEXT('{ "house": { "address": { "street": "123 Any St.", "city": "Any Town", "state": "FL", "zip": "32830" }, "bathroom": { "color": "green", "shower": true }, "appliances": { "washing machine": { "brand": "Any Brand", "color": "beige" }, "dryer": { "brand": "Any Brand", "color": "white" } } } }', 'house', 'appliances', 'washing machine', 'brand');
+------------------------+ | json_extract_path_text | +------------------------+ | Any Brand | +------------------------+
L'esempio seguente crea una tabella di esempio e la popola con SUPER i valori, quindi restituisce il valore del percorso 'f2'
per entrambe le righe.
CREATE TABLE json_example(id INT, json_text SUPER); INSERT INTO json_example VALUES (1, JSON_PARSE('{"f2":{"f3":1},"f4":{"f5":99,"f6":"star"}}')), (2, JSON_PARSE('{ "farm": { "barn": { "color": "red", "feed stocked": true } } }')); SELECT * FROM json_example;
id | json_text ------------+-------------------------------------------- 1 | {"f2":{"f3":1},"f4":{"f5":99,"f6":"star"}} 2 | {"farm":{"barn":{"color":"red","feed stocked":true}}}
SELECT id, JSON_EXTRACT_PATH_TEXT(JSON_SERIALIZE(json_text), 'f2') FROM json_example;id | json_text ------------+-------------------------------------------- 1 | {"f3":1} 2 |