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.