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

JSON_CONTAINS() Przykłady w MySQL

W MySQL funkcja JSON_CONTAINS() funkcja sprawdza, czy określona wartość znajduje się w danym dokumencie JSON lub, opcjonalnie, w określonej ścieżce w dokumencie.

Jeśli wartość zostanie znaleziona, JSON_CONTAINS() zwraca 1 , w przeciwnym razie zwraca 0 .

Składnia

Składnia wygląda tak:

JSON_CONTAINS(target, candidate[, path])

Funkcja zwraca 1 lub 0 w zależności od tego, czy dany candidate Dokument JSON jest zawarty w target Dokument JSON lub — jeśli path podano argument — czy kandydat znajduje się na określonej ścieżce w miejscu docelowym.

Przykład 1 – Dwa argumenty

Oto przykład pokazujący podstawowe użycie bez określania ścieżki (tj. Podanie tylko dwóch argumentów).

SET @doc1 = '{"a": 1, "b": 2, "c": {"d": 3}}';
SET @doc2 = '{"c": {"d": 3}}';
SELECT JSON_CONTAINS(@doc1, @doc2) AS Result;

Wynik:

+--------+
| Result |
+--------+
|      1 |
+--------+

Zwróć uwagę na nawiasy klamrowe wokół drugiego argumentu. Są one wymagane, aby była poprawna w formacie JSON. Jeśli pominiemy nawiasy klamrowe, otrzymamy błąd:

SET @doc1 = '{"a": 1, "b": 2, "c": {"d": 3}}';
SET @doc2 = '"c": {"d": 3}';
SELECT JSON_CONTAINS(@doc1, @doc2) AS Result;

Wynik:

ERROR 3141 (22032): Invalid JSON text in argument 2 to function json_contains: "The document root must not be followed by other values." at position 3.

Przykład 2 – Trzy argumenty

W tym przykładzie dodaję trzeci argument, aby wskazać konkretną ścieżkę, dla której należy znaleźć drugi argument w pierwszym argumencie.

SET @doc1 = '{"a": 1, "b": 2, "c": {"d": 3}}';
SET @doc2 = '1';
SELECT JSON_CONTAINS(@doc1, @doc2, '$.a') AS Result;

Wynik:

+--------+
| Result |
+--------+
|      1 |
+--------+

W tym przypadku drugi argument został znaleziony w pierwszym argumencie w ścieżce określonej przez trzeci argument.

Gdyby nie został znaleziony, skończylibyśmy tak:

SET @doc1 = '{"a": 1, "b": 2, "c": {"d": 3}}';
SET @doc2 = '2';
SELECT JSON_CONTAINS(@doc1, @doc2, '$.a') AS Result;

Wynik:

+--------+
| Result |
+--------+
|      0 |
+--------+

Przykład 3 – Notacja kropkowa

Możesz użyć notacji kropkowej, aby wskazać określone ścieżki w dokumencie JSON.

SET @doc1 = '{"a": 1, "b": 2, "c": {"d": 3}}';
SET @doc2 = '3';
SELECT JSON_CONTAINS(@doc1, @doc2, '$.c.d') AS Result;

Wynik:

+--------+
| Result |
+--------+
|      1 |
+--------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać rekordy z ostatnich 24 godzin w MySQL?

  2. Policz wystąpienia DISTINCT wartości

  3. Jak zwrócić wiersze, które mają te same wartości kolumn w MySql

  4. Jak w SQL wybrać 2 górne wiersze dla każdej grupy?

  5. Jak podłączyć zdalną bazę danych MySQL w PHP