sql >> Databasteknik >  >> RDS >> Mysql

JSON_CONTAINS() Exempel i MySQL

I MySQL, JSON_CONTAINS() funktion testar huruvida ett angivet värde finns i det givna JSON-dokumentet eller, valfritt, vid den angivna sökvägen i dokumentet.

Om värdet hittas, JSON_CONTAINS() returnerar 1 , annars returnerar den 0 .

Syntax

Syntaxen ser ut så här:

JSON_CONTAINS(target, candidate[, path])

Funktionen returnerar 1 eller 0 beroende på om en given candidate JSON-dokumentet finns i ett target JSON-dokument, eller – om en path argumentet tillhandahölls – om kandidaten finns på en specifik väg inom målet.

Exempel 1 – Två argument

Här är ett exempel för att demonstrera grundläggande användning utan att ange en sökväg (dvs. tillhandahåller endast två argument).

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

Resultat:

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

Notera de lockiga klammerparenteserna runt det andra argumentet. Dessa krävs för att göra den giltig JSON. Om vi ​​utelämnar de lockiga hängslen, kommer vi att få ett felmeddelande:

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

Resultat:

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.

Exempel 2 – Tre argument

I det här exemplet lägger jag till ett tredje argument, för att indikera en specifik sökväg för att hitta det andra argumentet i det första argumentet.

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

Resultat:

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

I det här fallet hittades det andra argumentet i det första argumentet på den sökväg som anges av det tredje argumentet.

Om den inte hittades skulle vi sluta med detta:

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

Resultat:

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

Exempel 3 – Punktnotation

Du kan använda punktnotation för att indikera specifika sökvägar i JSON-dokumentet.

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

Resultat:

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

  1. Vad är vårintegration?

  2. Tillåt alla fjärranslutningar, MySQL

  3. MySQL autoinkrement-kolumn hoppar med 10- varför?

  4. PostgreSQL var allt i array