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

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

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

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

Синтаксис

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

JSON_CONTAINS_PATH(json_doc, one_or_all, path[, path] ...)

Където json_doc е JSON документът, one_or_all е ключовата дума one или all (за да посочите дали трябва да съществува само един път или всички пътища трябва да съществуват, преди да върне 1 ) и path е действителният път.

Пример 1 – Основна употреба

Ето пример за демонстриране на основна употреба.

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

Резултат:

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

Пътят $.a съществува в документа JSON и следователно резултатът е 1 . Използвахме one като втория аргумент, но в този случай ще получим същия резултат, ако посочим all .

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

Резултат:

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

Ако посочим път, който не съществува, получаваме 0 . Пример:

SET @doc = '{"a": 1, "b": 2, "c": {"d": 3}}';
SELECT JSON_CONTAINS_PATH(@doc, 'one', '$.z') AS Result;

Резултат:

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

Пример 2 – Множество пътища

В следващите примери указваме два пътя.

В първия пример единият път съществува, но другият не. Но тъй като използвам one като втори аргумент, резултатът е положителен (тъй като съществува поне един от пътищата).

SET @doc = '{"a": 1, "b": 2, "c": {"d": 3}}';
SELECT JSON_CONTAINS_PATH(@doc, 'one', '$.a', '$.z') AS Result;

Резултат:

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

Ако превключим one до all получаваме отрицателен резултат.

SET @doc = '{"a": 1, "b": 2, "c": {"d": 3}}';
SELECT JSON_CONTAINS_PATH(@doc, 'all', '$.a', '$.z') AS Result;

Резултат:

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

Това е така, защото all ключова дума изисква всички пътища да съществуват в JSON документа, преди да върне 1 .

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

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

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

Резултат:

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

Пример 4 – Масиви

Ето няколко примера за масиви.

Първият пример връща положителен резултат.

SET @doc = '{"a": 1, "b": 2, "c": [3, 4, 5]}';
SELECT JSON_CONTAINS_PATH(@doc, 'all', '$.c[0]') AS Result;

Резултат:

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

Следващият пример връща отрицателен резултат.

SET @doc = '{"a": 1, "b": 2, "c": [3, 4, 5]}';
SELECT JSON_CONTAINS_PATH(@doc, 'all', '$.c[3]') AS Result;

Резултат:

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

Това връща отрицателно, тъй като масивите използват номериране на базата на нула. Следователно пътят $.c[3] представлява четвъртия елемент, но масивът съдържа само три елемента.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да повторя идентификатор на ресурс #6 от отговор на MySql в PHP?

  2. SYSDATE() срещу NOW() в MySQL:Каква е разликата?

  3. Neo4j - Премахнете ограничение с помощта на Cypher

  4. Изхвърляне на MySQL по заявка

  5. Laravel:PDOException:не можа да намери драйвер