sql >> Database >  >> RDS >> Mysql

JSON_EXTRACT() – Gegevens retourneren uit een JSON-document in MySQL

In MySQL is de JSON_EXTRACT() functie retourneert gegevens uit een JSON-document. De daadwerkelijk geretourneerde gegevens worden bepaald door het pad dat u als argument opgeeft.

U geeft het JSON-document op als het eerste argument, gevolgd door het pad van de gegevens die moeten worden geretourneerd. U kunt ook meerdere paden opgeven om gegevens van meerdere plaatsen in het document te retourneren.

Syntaxis

De syntaxis gaat als volgt:

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

Waar json_doc is het JSON-document en path is het pad naar de te retourneren waarde.

Als het mogelijk is dat die argumenten meerdere waarden kunnen retourneren, worden de overeenkomende waarden automatisch verpakt als een array, in de volgorde die overeenkomt met de paden die ze hebben geproduceerd.

Voorbeeld 1 – Basisgebruik

Hier is een voorbeeld om te demonstreren.

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

Resultaat:

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

In dit geval hebben we de waarde van de sleutel b . geretourneerd .

Hier is nog een voorbeeld:

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

Resultaat:

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

Voorbeeld 2 – Niet-bestaand pad

Als u een pad opgeeft dat niet bestaat, wordt een NULL-waarde geretourneerd.

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

Resultaat:

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

U krijgt ook een NULL-waarde als een van de argumenten NULL . is .

Voorbeeld 3 – Arrays

Hier is een voorbeeld waarin een array wordt gebruikt.

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

Resultaat:

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

Arrays gebruiken op nul gebaseerde nummering, dus in dit geval wordt het derde element vervangen.

Hier is nog een matrixvoorbeeld. Deze keer retourneren we een waarde uit een geneste array.

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

Resultaat:

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

Voorbeeld 4 – Meerdere paden

U kunt meer dan één pad specificeren om gegevens van meerdere plaatsen in het JSON-document te retourneren.

Basisvoorbeeld:

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

Resultaat:

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

Voorbeeld 5 – Een groter JSON-document

Hier is een voorbeeld met een iets groter JSON-document.

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

Resultaat:

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

We kunnen indien nodig ook een specifiek element uit de array kiezen:

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

Resultaat:

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

  1. Pg_dump gebruiken om alleen insert-instructies uit één tabel binnen de database te krijgen

  2. Converteer datumnotatie naar DD/MMM/YYYY-formaat in SQL Server

  3. Problemen met het instellen van een aangepaste primaire sleutel in een Rails 4-migratie

  4. ALTER TABLE om een ​​samengestelde primaire sleutel toe te voegen