- Kategorien:
Funktionen für semistrukturierte und strukturierte Daten (Extraktion)
JSON_EXTRACT_PATH_TEXT¶
Analysiert das erste Argument als JSON-Zeichenfolge und gibt den Wert des Elements zurück, auf das der Pfad im zweiten Argument zeigt. Dies ist äquivalent zu TO_VARCHAR(GET_PATH(PARSE_JSON(JSON), PATH))
Syntax¶
JSON_EXTRACT_PATH_TEXT( <column_identifier> , '<path_name>' )
Argumente¶
column_identifier
Der Name der Spalte mit den Daten, die Sie extrahieren möchten.
path_name
Eine Zeichenfolge, die den Pfad zu dem Element enthält, das Sie extrahieren möchten.
Rückgabewerte¶
Der Datentyp des zurückgegebenen Werts ist VARCHAR.
Nutzungshinweise¶
Die Funktion gibt NULL zurück, wenn der Pfadname keinem Element entspricht.
Die Syntax für Pfadnamen besteht aus standardmäßiger JavaScript-Notation und beinhaltet eine Verkettung von Feldnamen (Bezeichnern), denen Punkte (z. B.
.
) und Indexoperatoren (z. B.[<Index>]
) vorangestellt sind:Beim ersten Feldnamen muss der führende Punkt nicht angegeben werden.
Die Indexwerte in den Indexoperatoren können nicht negative Ganzzahlen (bei Arrays) bzw. Zeichenfolgenliterale in einfachen oder doppelten Anführungszeichen sein (bei Objektfeldern).
Weitere Details dazu finden Sie unter Abfragen von semistrukturierten Daten.
Zur Wahrung der syntaktischen Konsistenz unterstützt die Pfadnotation auch Bezeichner in SQL-artigen doppelten Anführungszeichen sowie die Verwendung von
:
als Pfadtrennzeichen.
Beispiele¶
Erstellen Sie eine Tabelle, und fügen Sie Zeilen ein:
CREATE TABLE demo1 (id INTEGER, json_data VARCHAR); INSERT INTO demo1 SELECT 1, '{"level_1_key": "level_1_value"}'; INSERT INTO demo1 SELECT 2, '{"level_1_key": {"level_2_key": "level_2_value"}}'; INSERT INTO demo1 SELECT 3, '{"level_1_key": {"level_2_key": ["zero", "one", "two"]}}';
Verwenden Sie JSON_EXTRACT_PATH_TEXT, um einen Wert aus einer einfachen Ebene-1-Zeichenfolge zu extrahieren:
SELECT TO_VARCHAR(GET_PATH(PARSE_JSON(json_data), 'level_1_key')) AS OLD_WAY, JSON_EXTRACT_PATH_TEXT(json_data, 'level_1_key') AS JSON_EXTRACT_PATH_TEXT FROM demo1 ORDER BY id; +--------------------------------------+--------------------------------------+ | OLD_WAY | JSON_EXTRACT_PATH_TEXT | |--------------------------------------+--------------------------------------| | level_1_value | level_1_value | | {"level_2_key":"level_2_value"} | {"level_2_key":"level_2_value"} | | {"level_2_key":["zero","one","two"]} | {"level_2_key":["zero","one","two"]} | +--------------------------------------+--------------------------------------+
Verwenden Sie JSON_EXTRACT_PATH_TEXT, um einen Wert aus einer Ebene-2-Zeichenfolge mithilfe eines Ebene-2-Pfads zu extrahieren:
SELECT TO_VARCHAR(GET_PATH(PARSE_JSON(json_data), 'level_1_key.level_2_key')) AS OLD_WAY, JSON_EXTRACT_PATH_TEXT(json_data, 'level_1_key.level_2_key') AS JSON_EXTRACT_PATH_TEXT FROM demo1 ORDER BY id; +----------------------+------------------------+ | OLD_WAY | JSON_EXTRACT_PATH_TEXT | |----------------------+------------------------| | NULL | NULL | | level_2_value | level_2_value | | ["zero","one","two"] | ["zero","one","two"] | +----------------------+------------------------+
Dieses Beispiel enthält ein Array:
SELECT TO_VARCHAR(GET_PATH(PARSE_JSON(json_data), 'level_1_key.level_2_key[1]')) AS OLD_WAY, JSON_EXTRACT_PATH_TEXT(json_data, 'level_1_key.level_2_key[1]') AS JSON_EXTRACT_PATH_TEXT FROM demo1 ORDER BY id; +---------+------------------------+ | OLD_WAY | JSON_EXTRACT_PATH_TEXT | |---------+------------------------| | NULL | NULL | | NULL | NULL | | one | one | +---------+------------------------+