W MySQL JSON_EXTRACT()
funkcja zwraca dane z dokumentu JSON. Rzeczywiste zwrócone dane są określane przez ścieżkę, którą podasz jako argument.
Jako pierwszy argument podajesz dokument JSON, po którym następuje ścieżka danych do zwrócenia. Możesz również podać wiele ścieżek do zwracania danych z wielu miejsc w dokumencie.
Składnia
Składnia wygląda tak:
JSON_EXTRACT(json_doc, path[, path] ...)
Gdzie json_doc
jest dokumentem JSON i path
jest ścieżką do wartości do zwrócenia.
Jeśli jest możliwe, że te argumenty mogą zwrócić wiele wartości, dopasowane wartości są automatycznie zawijane w tablicę w kolejności odpowiadającej ścieżkom, które je utworzyły.
Przykład 1 – Podstawowe użycie
Oto przykład do zademonstrowania.
SELECT JSON_EXTRACT('{"a": 1, "b": 2, "c": 3}', '$.b') AS 'Result';
Wynik:
+--------+ | Result | +--------+ | 2 | +--------+
W tym przypadku zwróciliśmy wartość klucza b
.
Oto kolejny przykład:
SELECT JSON_EXTRACT('{"Name": "Bart", "Age": 10}', '$.Name') AS 'Result';
Wynik:
+--------+ | Result | +--------+ | "Bart" | +--------+
Przykład 2 – Nieistniejąca ścieżka
Jeśli określisz ścieżkę, która nie istnieje, zwracana jest wartość NULL.
SELECT JSON_EXTRACT('{"Name": "Homer", "Age": 39}', '$.Gender') AS 'Result';
Wynik:
+--------+ | Result | +--------+ | NULL | +--------+
Otrzymasz również wartość NULL, jeśli którykolwiek z argumentów jest NULL
.
Przykład 3 – Tablice
Oto przykład użycia tablicy.
SELECT JSON_EXTRACT('[1, 2, 3]', '$[2]') AS 'Result';
Wynik:
+--------+ | Result | +--------+ | 3 | +--------+
Tablice używają numeracji od zera, więc w tym przypadku trzeci element jest zastępowany.
Oto kolejny przykład tablicy. Tym razem zwracamy wartość z zagnieżdżonej tablicy.
SELECT JSON_EXTRACT('[1, 2, [3, 4, 5]]', '$[2][1]') AS 'Result';
Wynik:
+--------+ | Result | +--------+ | 4 | +--------+
Przykład 4 – Wiele ścieżek
Możesz określić więcej niż jedną ścieżkę, aby zwrócić dane z wielu miejsc w dokumencie JSON.
Podstawowy przykład:
SELECT JSON_EXTRACT('[1, 2, 3, 4, 5]', '$[1]', '$[3]') AS 'Result';
Wynik:
+--------+ | Result | +--------+ | [2, 4] | +--------+
Przykład 5 – Większy dokument JSON
Oto przykład z nieco większym dokumentem JSON.
SET @data = '{ "Person": { "Name": "Homer", "Age": 39, "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_EXTRACT(@data, '$.Person.Name', '$.Person.Age', '$.Person.Hobbies') AS 'Result';
Wynik:
+---------------------------------------+ | Result | +---------------------------------------+ | ["Homer", 39, ["Eating", "Sleeping"]] | +---------------------------------------+
W razie potrzeby możemy również wybrać określony element z tablicy:
SET @data = '{ "Person": { "Name": "Homer", "Age": 39, "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_EXTRACT(@data, '$.Person.Name', '$.Person.Age', '$.Person.Hobbies[1]') AS 'Result';
Wynik:
+---------------------------+ | Result | +---------------------------+ | ["Homer", 39, "Sleeping"] | +---------------------------+