Mysql
 sql >> база данни >  >> RDS >> Mysql

JSON_CONTAINS() Примери в MySQL

В MySQL, JSON_CONTAINS() функцията тества дали определена стойност е намерена или не в дадения JSON документ или, по избор, на посочения път в документа.

Ако стойността е намерена, JSON_CONTAINS() връща 1 , в противен случай връща 0 .

Синтаксис

Синтаксисът е така:

JSON_CONTAINS(target, candidate[, path])

Функцията връща 1 или 0 в зависимост от това дали даден candidate JSON документът се съдържа в target JSON документ или—ако path беше предоставен аргумент — дали кандидатът е намерен на определен път в рамките на целта.

Пример 1 – Два аргумента

Ето пример за демонстриране на основно използване, без да указвате път (т.е. предоставяне само на два аргумента).

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

Резултат:

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

Обърнете внимание на къдравите скоби около втория аргумент. Те са необходими, за да стане валиден JSON. Ако пропуснем фигурните скоби, ще получим грешка:

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

Резултат:

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.

Пример 2 – Три аргумента

В този пример добавям трети аргумент, за да посоча конкретен път, за който да намеря втория аргумент в първия аргумент.

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

Резултат:

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

В този случай вторият аргумент е намерен в първия аргумент по пътя, посочен от третия аргумент.

Ако не беше намерен, щяхме да свършим с това:

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

Резултат:

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

Пример 3 – Точкова нотация

Можете да използвате нотация с точки, за да посочите конкретни пътища в JSON документа.

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

Резултат:

+--------+
| 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. Създайте индекс на огромна таблица за производство на MySQL без заключване на таблицата

  2. MySQL предоставя всички привилегии на база данни с изключение на една таблица

  3. Поточно предаване на големи набори от резултати с MySQL

  4. CONV() – Преобразуване на числа между различни бази в MySQL

  5. Използваните оператори SELECT имат различен брой колони (REDUX!!)