sql >> Database teknologi >  >> RDS >> Mysql

JSON_CONTAINS_PATH() Eksempler i MySQL

I MySQL er JSON_CONTAINS_PATH() funktion tester, om der findes en specificeret sti i det givne JSON-dokument.

Hvis stien findes, JSON_CONTAINS_PATH() returnerer 1 , ellers returnerer den 0 .

Syntaks

Syntaksen ser sådan ud:

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

Hvor json_doc er JSON-dokumentet, one_or_all er søgeordet one eller all (for at angive, om der kun skal eksistere én sti, eller alle stier skal eksistere, før 1 returneres ), og path er den faktiske vej.

Eksempel 1 – Grundlæggende brug

Her er et eksempel til at demonstrere grundlæggende brug.

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

Resultat:

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

Stien $.a findes i JSON-dokumentet, og derfor er resultatet 1 . Vi brugte one som det andet argument, men i dette tilfælde ville vi få det samme resultat, hvis vi havde angivet all .

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

Resultat:

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

Hvis vi angiver en sti, der ikke eksisterer, får vi 0 . Eksempel:

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

Resultat:

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

Eksempel 2 – Flere stier

I de følgende eksempler angiver vi to stier.

I det første eksempel eksisterer den ene vej, men den anden gør det ikke. Men fordi jeg bruger one som det andet argument er resultatet positivt (fordi mindst én af stierne findes).

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

Resultat:

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

Hvis vi skifter one til all vi får et negativt resultat.

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

Resultat:

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

Dette skyldes, at all nøgleordet kræver, at alle stier skal eksistere i JSON-dokumentet, før det returnerer en 1 .

Eksempel 3 – Punktnotation

Du kan bruge punktnotation til at angive specifikke stier i JSON-dokumentet.

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

Resultat:

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

Eksempel 4 – Arrays

Her er et par array-eksempler.

Det første eksempel giver et positivt resultat.

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

Resultat:

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

Det næste eksempel returnerer et negativt resultat.

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

Resultat:

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

Dette returnerer negativt, fordi arrays bruger nul baseret nummerering. Derfor er stien $.c[3] repræsenterer det fjerde element, men arrayet indeholder kun tre elementer.


  1. Sådan identificeres ugyldige (beskadigede) værdier gemt i Oracle DATE-kolonner

  2. Hvordan indstilles timeren til at kalde en funktion hvert n minut?

  3. Administreret ODP.NET-driver vises ikke i dialogboksen Datakilde

  4. Optimal måde at SLETTE specificerede rækker fra Oracle