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

JSON_EXTRACT() – Vrácení dat z dokumentu JSON v MySQL

V MySQL je to JSON_EXTRACT() Funkce vrací data z dokumentu JSON. Skutečná vrácená data jsou určena cestou, kterou zadáte jako argument.

Jako první argument zadáte dokument JSON, za nímž následuje cesta dat, která se mají vrátit. Můžete také zadat více cest pro vrácení dat z více míst v dokumentu.

Syntaxe

Syntaxe vypadá takto:

JSON_EXTRACT(json_doc, path[, path] ...)

Kde json_doc je dokument JSON a path je cesta k hodnotě, která se má vrátit.

Pokud je možné, že tyto argumenty mohou vracet více hodnot, odpovídající hodnoty se automaticky zabalí do pole v pořadí odpovídajícím cestám, které je vytvořily.

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

Zde je příklad k demonstraci.

SELECT JSON_EXTRACT('{"a": 1, "b": 2, "c": 3}', '$.b') AS 'Result';

Výsledek:

+--------+
| Result |
+--------+
| 2      |
+--------+

V tomto případě jsme vrátili hodnotu klíče b .

Zde je další příklad:

SELECT 
  JSON_EXTRACT('{"Name": "Bart", "Age": 10}', '$.Name') AS 'Result';

Výsledek:

+--------+
| Result |
+--------+
| "Bart" |
+--------+

Příklad 2 – Neexistující cesta

Pokud zadáte cestu, která neexistuje, vrátí se hodnota NULL.

SELECT 
  JSON_EXTRACT('{"Name": "Homer", "Age": 39}', '$.Gender') AS 'Result';

Výsledek:

+--------+
| Result |
+--------+
| NULL   |
+--------+

Pokud je některý z argumentů NULL, získáte také hodnotu NULL .

Příklad 3 – Pole

Zde je příklad použití pole.

SELECT JSON_EXTRACT('[1, 2, 3]', '$[2]') AS 'Result';

Výsledek:

+--------+
| Result |
+--------+
| 3      |
+--------+

Pole používají číslování založené na nule, takže v tomto případě je třetí prvek nahrazen.

Zde je další příklad pole. Tentokrát vrátíme hodnotu z vnořeného pole.

SELECT JSON_EXTRACT('[1, 2, [3, 4, 5]]', '$[2][1]') AS 'Result';

Výsledek:

+--------+
| Result |
+--------+
| 4      |
+--------+

Příklad 4 – Více cest

Chcete-li vrátit data z více míst v dokumentu JSON, můžete zadat více než jednu cestu.

Základní příklad:

SELECT JSON_EXTRACT('[1, 2, 3, 4, 5]', '$[1]', '$[3]') AS 'Result';

Výsledek:

+--------+
| Result |
+--------+
| [2, 4] |
+--------+

Příklad 5 – Větší dokument JSON

Zde je příklad s o něco větším dokumentem JSON.

SET @data = '{  
    "Person": {    
       "Name": "Homer", 
       "Age": 39,
       "Hobbies": ["Eating", "Sleeping"]  
    }
 }';
SELECT JSON_EXTRACT(@data, '$.Person.Name', '$.Person.Age', '$.Person.Hobbies') AS 'Result';

Výsledek:

+---------------------------------------+
| Result                                |
+---------------------------------------+
| ["Homer", 39, ["Eating", "Sleeping"]] |
+---------------------------------------+

V případě potřeby můžeme také vybrat konkrétní prvek z pole:

SET @data = '{  
    "Person": {    
       "Name": "Homer", 
       "Age": 39,
       "Hobbies": ["Eating", "Sleeping"]  
    }
 }';
SELECT JSON_EXTRACT(@data, '$.Person.Name', '$.Person.Age', '$.Person.Hobbies[1]') AS 'Result';

Výsledek:

+---------------------------+
| Result                    |
+---------------------------+
| ["Homer", 39, "Sleeping"] |
+---------------------------+

  1. Jak odstranit všechny primární klíče ze všech tabulek v databázi SQL Server - SQL Server / TSQL výukový program, část 65

  2. MySQL:ALTER IGNORE TABLE ADD UNIKÁTNÍ, co bude zkráceno?

  3. Formátování čísel s čárkami v PostgreSQL

  4. Základy šifrování databáze serveru MariaDB