Mysql
 sql >> Baza danych >  >> RDS >> Mysql

JSON_CONTAINS_PATH() Przykłady w MySQL

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Importuj bazę danych MySQL do serwera MS SQL

  2. Łączenie ciągów w MySQL

  3. Odmowa dostępu dla użytkownika 'root'@'localhost' (przy użyciu hasła:TAK) (Mysql::Błąd)

  4. Kiedy używać STRAIGHT_JOIN z MySQL

  5. Jak uzyskać rozmiar bazy danych MySQL dla swojej bazy danych?