W MySQL JSON_CONTAINS_PATH() funkcja sprawdza, czy w danym dokumencie JSON znajduje się określona ścieżka.
Jeśli ścieżka zostanie znaleziona, JSON_CONTAINS_PATH() zwraca 1 , w przeciwnym razie zwraca 0 .
Składnia
Składnia wygląda tak:
JSON_CONTAINS_PATH(json_doc, one_or_all, path[, path] ...)
Gdzie json_doc to dokument JSON, one_or_all to słowo kluczowe one lub all (aby wskazać, czy tylko jedna ścieżka musi istnieć, czy wszystkie ścieżki muszą istnieć przed zwróceniem 1 ) i path jest rzeczywistą ścieżką.
Przykład 1 – Podstawowe użycie
Oto przykład demonstrujący podstawowe użycie.
SET @doc = '{"a": 1, "b": 2, "c": {"d": 3}}';
SELECT JSON_CONTAINS_PATH(@doc, 'one', '$.a') AS Result;
Wynik:
+--------+ | Result | +--------+ | 1 | +--------+
Ścieżka $.a istnieje w dokumencie JSON, dlatego wynikiem jest 1 . Użyliśmy one jako drugi argument, ale w tym przypadku otrzymalibyśmy ten sam wynik, gdy określilibyśmy all .
SET @doc = '{"a": 1, "b": 2, "c": {"d": 3}}';
SELECT JSON_CONTAINS_PATH(@doc, 'all', '$.a') AS Result;
Wynik:
+--------+ | Result | +--------+ | 1 | +--------+
Jeśli określimy ścieżkę, która nie istnieje, otrzymamy 0 . Przykład:
SET @doc = '{"a": 1, "b": 2, "c": {"d": 3}}';
SELECT JSON_CONTAINS_PATH(@doc, 'one', '$.z') AS Result;
Wynik:
+--------+ | Result | +--------+ | 0 | +--------+
Przykład 2 – Wiele ścieżek
W poniższych przykładach podajemy dwie ścieżki.
W pierwszym przykładzie jedna ścieżka istnieje, a druga nie. Ale ponieważ używam one jako drugi argument wynik jest dodatni (ponieważ istnieje co najmniej jedna ze ścieżek).
SET @doc = '{"a": 1, "b": 2, "c": {"d": 3}}';
SELECT JSON_CONTAINS_PATH(@doc, 'one', '$.a', '$.z') AS Result;
Wynik:
+--------+ | Result | +--------+ | 1 | +--------+
Jeśli zmienimy one do all otrzymujemy wynik negatywny.
SET @doc = '{"a": 1, "b": 2, "c": {"d": 3}}';
SELECT JSON_CONTAINS_PATH(@doc, 'all', '$.a', '$.z') AS Result;
Wynik:
+--------+ | Result | +--------+ | 0 | +--------+
Dzieje się tak, ponieważ all słowo kluczowe wymaga, aby wszystkie ścieżki istniały w dokumencie JSON, zanim zwróci 1 .
Przykład 3 – Notacja kropkowa
Możesz użyć notacji kropkowej, aby wskazać określone ścieżki w dokumencie JSON.
SET @doc = '{"a": 1, "b": 2, "c": {"d": 3}}';
SELECT JSON_CONTAINS_PATH(@doc, 'all', '$.c.d') AS Result;
Wynik:
+--------+ | Result | +--------+ | 1 | +--------+
Przykład 4 – Tablice
Oto kilka przykładów tablic.
Pierwszy przykład zwraca wynik pozytywny.
SET @doc = '{"a": 1, "b": 2, "c": [3, 4, 5]}';
SELECT JSON_CONTAINS_PATH(@doc, 'all', '$.c[0]') AS Result;
Wynik:
+--------+ | Result | +--------+ | 1 | +--------+
Następny przykład zwraca wynik negatywny.
SET @doc = '{"a": 1, "b": 2, "c": [3, 4, 5]}';
SELECT JSON_CONTAINS_PATH(@doc, 'all', '$.c[3]') AS Result;
Wynik:
+--------+ | Result | +--------+ | 0 | +--------+
Zwraca to wartość ujemną, ponieważ tablice używają numerowania od zera. Dlatego ścieżka $.c[3] reprezentuje czwarty element, ale tablica zawiera tylko trzy elementy.