sql >> Databáze >  >> RDS >> Mysql

JSON_CONTAINS_PATH() Příklady v MySQL

V MySQL je to JSON_CONTAINS_PATH() function testuje, zda je v daném dokumentu JSON nalezena zadaná cesta.

Pokud je cesta nalezena, JSON_CONTAINS_PATH() vrátí 1 , jinak vrátí 0 .

Syntaxe

Syntaxe vypadá takto:

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

Kde json_doc je dokument JSON, one_or_all je klíčové slovo one nebo all (pro označení, zda musí existovat pouze jedna cesta, nebo musí existovat všechny cesty, než se vrátí 1 ) a path je skutečná cesta.

Příklad 1 – Základní použití

Zde je příklad demonstrující základní použití.

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

Výsledek:

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

Cesta $.a existuje v dokumentu JSON, a proto je výsledek 1 . Použili jsme one jako druhý argument, ale v tomto případě bychom dostali stejný výsledek, kdybychom zadali all .

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

Výsledek:

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

Pokud zadáme cestu, která neexistuje, dostaneme 0 . Příklad:

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

Výsledek:

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

Příklad 2 – Více cest

V následujících příkladech specifikujeme dvě cesty.

V prvním příkladu jedna cesta existuje, ale druhá ne. Ale protože používám one jako druhý argument je výsledek kladný (protože alespoň jedna z cest existuje).

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

Výsledek:

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

Pokud přepneme one na all dostaneme negativní výsledek.

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

Výsledek:

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

Je to proto, že all Klíčové slovo vyžaduje, aby v dokumentu JSON existovaly všechny cesty, než vrátí 1 .

Příklad 3 – Tečkový zápis

K označení konkrétních cest v dokumentu JSON můžete použít tečkovou notaci.

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

Výsledek:

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

Příklad 4 – Pole

Zde je několik příkladů pole.

První příklad vrátí kladný výsledek.

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

Výsledek:

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

Další příklad vrátí záporný výsledek.

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

Výsledek:

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

To vrátí zápornou hodnotu, protože pole používají číslování založené na nule. Proto cesta $.c[3] představuje čtvrtý prvek, ale pole obsahuje pouze tři prvky.


  1. Chrání mysql_real_escape_string() PLNĚ před SQL injection?

  2. PDO MySQL:Vložení více řádků do jednoho dotazu

  3. Jak porovnat datum a čas pouze s datem na serveru SQL Server

  4. Jak TO_SECONDS() funguje v MariaDB