Mysql
 sql >> Datenbank >  >> RDS >> Mysql

JSON_CONTAINS_PATH() Beispiele in MySQL

In MySQL der JSON_CONTAINS_PATH() Funktion testet, ob ein angegebener Pfad im angegebenen JSON-Dokument gefunden wird.

Wenn der Pfad gefunden wird, JSON_CONTAINS_PATH() gibt 1 zurück , andernfalls wird 0 zurückgegeben .

Syntax

Die Syntax lautet wie folgt:

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

Wobei json_doc ist das JSON-Dokument, one_or_all ist das Schlüsselwort one oder all (um anzugeben, ob nur ein Pfad vorhanden sein muss oder alle Pfade vorhanden sein müssen, bevor 1 zurückgegeben wird ) und path ist der tatsächliche Pfad.

Beispiel 1 – Grundlegende Verwendung

Hier ist ein Beispiel, um die grundlegende Verwendung zu demonstrieren.

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

Ergebnis:

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

Der Pfad $.a existiert im JSON-Dokument, und daher ist das Ergebnis 1 . Wir haben one verwendet als zweites Argument, aber in diesem Fall würden wir dasselbe Ergebnis erhalten, wenn wir all angegeben hätten .

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

Ergebnis:

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

Wenn wir einen Pfad angeben, der nicht existiert, erhalten wir 0 . Beispiel:

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

Ergebnis:

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

Beispiel 2 – Mehrere Pfade

In den folgenden Beispielen geben wir zwei Pfade an.

Im ersten Beispiel existiert ein Pfad, der andere jedoch nicht. Sondern weil ich one verwende als zweites Argument ist das Ergebnis positiv (weil mindestens einer der Pfade existiert).

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

Ergebnis:

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

Wenn wir one tauschen zu all wir erhalten ein negatives Ergebnis.

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

Ergebnis:

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

Das liegt daran, dass all -Schlüsselwort erfordert, dass alle Pfade im JSON-Dokument vorhanden sein müssen, bevor es einen 1 zurückgibt .

Beispiel 3 – Punktnotation

Sie können die Punktnotation verwenden, um bestimmte Pfade innerhalb des JSON-Dokuments anzugeben.

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

Ergebnis:

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

Beispiel 4 – Arrays

Hier sind ein paar Array-Beispiele.

Das erste Beispiel gibt ein positives Ergebnis zurück.

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

Ergebnis:

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

Das nächste Beispiel gibt ein negatives Ergebnis zurück.

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

Ergebnis:

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

Dies gibt negativ zurück, da Arrays eine nullbasierte Nummerierung verwenden. Daher ist der Pfad $.c[3] stellt das vierte Element dar, aber das Array enthält nur drei Elemente.