Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
JSONPATHFunktion _ _ _ EXTRACT TEXT
Anmerkung
JSON_ PARSE und die zugehörigen Funktionen analysieren JSON Werte alsSUPER, was Amazon Redshift effizienter analysiert als. VARCHAR
Anstatt JSON _ _ EXTRACT PATH _ zu verwenden, empfehlen wirTEXT, dass Sie Ihre JSON Zeichenketten mit dem analysieren, um einen Wert JSONPARSEFunktion _ zu erhalten. SUPER Fragen Sie dann das gewünschte Element mithilfe der value.attribute
Syntax ab. Weitere Informationen zum Abfragen von Array-Elementen in SUPER Werten finden Sie unter. Abfragen von halbstrukturierten Daten
Die TEXT Funktion JSON _ EXTRACT _ PATH _ gibt den Wert für das Schlüssel-Wert-Paar zurück, auf das eine Reihe von Pfadelementen in einer Zeichenfolge verweist. JSON Der JSON Pfad kann bis zu fünf Ebenen tief verschachtelt werden. Pfadelemente unterscheiden zwischen Groß- und Kleinschreibung. Wenn ein Pfadelement in der JSON Zeichenfolge nicht vorhanden ist, kehrt JSON _ _ EXTRACT PATH _ TEXT zurückNULL
.
Wenn das Argument null_if_invalid auf gesetzt ist true
und die JSON Zeichenfolge ungültig ist, gibt die Funktion einen Fehler zurück, NULL
anstatt einen Fehler zurückzugeben.
JSON_ _ EXTRACT PATH _ TEXT hat eine maximale Datengröße von 64 KB. Wenn also ein JSON Datensatz größer als 64 KB ist, TEXT führt die Verarbeitung mit JSON _ _ EXTRACT PATH _ zu einem Fehler.
Hinweise zu zusätzlichen JSON Funktionen finden Sie unterJSONFunktionen. Weitere Hinweise zur Arbeit mit JSON finden Sie unterCOPYaus dem Format JSON.
Syntax
JSON_EXTRACT_PATH_TEXT('json_string', 'path_elem' [,'path_elem'[, …] ] [, null_if_invalid ] )
Argumente
- json_string
-
Eine ordnungsgemäß formatierte JSON Zeichenfolge.
- path_elem
-
Ein Pfadelement in einer JSON Zeichenfolge. Es ist mindestens ein Pfadelement erforderlich. Es können zusätzliche Pfadelemente angegeben werden, bis zu einer Tiefe von fünf Ebenen.
- null_if_invalid
-
(Optional) Ein
BOOLEAN
Wert, der angibt, ob zurückgegeben werden soll,NULL
wenn die JSON Eingabezeichenfolge ungültig ist, anstatt einen Fehler zurückzugeben. Um zurückzugebenNULL
, wenn der ungültig JSON ist, geben Sietrue
(t
) an. Um einen Fehler zurückzugeben, falls der ungültig JSON ist, geben Siefalse
(f
) an. Der Standardwert istfalse
.
In einer JSON Zeichenfolge erkennt Amazon Redshift ein \n
Zeilenumbruchzeichen und \t
ein Tabulatorzeichen. Um einen Backslash zu laden, muss ein Backslash als Escape-Zeichen verwendet werden (\\
). Weitere Informationen finden Sie unter Escape-Zeichen in JSON.
Rückgabetyp
VARCHAR
-
Eine
VARCHAR
Zeichenfolge, die den JSON Wert darstellt, auf den die Pfadelemente verweisen.
Beispiele
Verwenden Sie das folgende Beispiel, um den Wert für den Pfad 'f4', 'f6'
zurückzugeben.
SELECT JSON_EXTRACT_PATH_TEXT('{"f2":{"f3":1},"f4":{"f5":99,"f6":"star"}}','f4', 'f6');
+------------------------+
| json_extract_path_text |
+------------------------+
| star |
+------------------------+
Verwenden Sie das folgende Beispiel, um einen Fehler zurückzugeben, weil der ungültig JSON ist.
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"}
Verwenden Sie das folgende Beispiel, um null_if_invalid auf true zu setzen, sodass die Anweisung NULL
für ungültig zurückgibt, JSON anstatt einen Fehler zurückzugeben.
SELECT JSON_EXTRACT_PATH_TEXT('{"f2":{"f3":1},"f4":{"f5":99,"f6":"star"}','f4', 'f6',true);
+------------------------+
| json_extract_path_text |
+------------------------+
| NULL |
+------------------------+
Verwenden Sie das folgende Beispiel, um den Wert für den Pfad 'farm', 'barn', 'color'
zurückgegeben, wobei sich der abgerufene Wert auf der dritten Ebene befindet. Dieses Beispiel wurde mit einem JSON Lint-Tool formatiert, um das Lesen zu erleichtern.
SELECT JSON_EXTRACT_PATH_TEXT('{
"farm": {
"barn": {
"color": "red",
"feed stocked": true
}
}
}', 'farm', 'barn', 'color');
+------------------------+
| json_extract_path_text |
+------------------------+
| red |
+------------------------+
Verwenden Sie das folgende Beispiel, um NULL
zurückzugeben, da das 'color'
-Element fehlt. Dieses Beispiel wurde mit einem JSON Lint-Tool formatiert.
SELECT JSON_EXTRACT_PATH_TEXT('{
"farm": {
"barn": {}
}
}', 'farm', 'barn', 'color');
+------------------------+
| json_extract_path_text |
+------------------------+
| NULL |
+------------------------+
Wenn das gültig JSON ist, wird beim Versuch, ein fehlendes Element zu extrahieren, zurückgegebenNULL
.
Verwenden Sie das folgende Beispiel, um den Wert für den Pfad 'house', 'appliances', 'washing machine', 'brand'
zurückzugeben.
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 |
+------------------------+
Das folgende Beispiel erstellt eine Beispieltabelle, füllt sie mit SUPER Werten und gibt dann den Wert für den Pfad 'f2'
für beide Zeilen zurück.
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 |