JSONPATHTEXTFunzione _ _ _ EXTRACT - Amazon Redshift

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 restituire NULL se la JSON stringa di input non è valida anziché restituire un errore. Per restituire NULL se non JSON è valido, specificare true (). t Per restituire un errore se non JSON è valido, specificare false ()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 |