sql >> Database >  >> RDS >> MariaDB

MariaDB JSON_VALUE() uitgelegd

In MariaDB, JSON_VALUE() is een ingebouwde functie die een scalaire waarde retourneert uit een JSON-document. Meer specifiek, het retourneert de scalaire waarde gespecificeerd door het opgegeven pad.

Syntaxis

De syntaxis gaat als volgt:

JSON_VALUE(json_doc, path)

Waar json_doc is het JSON-document, en path is een pad binnen het document.

Voorbeeld

Hier is een voorbeeld om te demonstreren.

SET @json_document = '
    { 
        "name": "Wag", 
        "type": "Dog", 
        "weight": 20 
    }
';
SELECT JSON_VALUE(@json_document, '$.name');

Resultaat:

+--------------------------------------+
| JSON_VALUE(@json_document, '$.name') |
+--------------------------------------+
| Wag                                  |
+--------------------------------------+

Niet-bestaand pad

Het doorgeven van een pad dat niet bestaat in het JSON-document resulteert in NULL .

Voorbeeld:

SET @json_document = '
    { 
        "name": "Wag", 
        "type": "Dog", 
        "weight": 20 
    }
';
SELECT JSON_VALUE(@json_document, '$.color');

Resultaat:

+---------------------------------------+
| JSON_VALUE(@json_document, '$.color') |
+---------------------------------------+
| NULL                                  |
+---------------------------------------+

Arrays

Hier is een voorbeeld van het retourneren van gegevens uit een array:

SET @json_document = '
    { 
        "_id" : 1, 
        "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] 
    }
';
SELECT JSON_VALUE(@json_document, '$.awards[1]');

Resultaat:

+-------------------------------------------+
| JSON_VALUE(@json_document, '$.awards[1]') |
+-------------------------------------------+
| Best Dog                                  |
+-------------------------------------------+

Arrays zijn gebaseerd op nul, en dus $.awards[1] extraheert het tweede element van de awards array.

geneste objecten

Hier is een voorbeeld van het verkrijgen van een waarde van een object dat in een ander object is genest:

SET @json_document = '
    { 
        "_id" : 1, 
        "name" : "Wag", 
        "details" : {
            "type" : "Dog", 
            "weight" : 20,
            "awards" : { 
                "Florida Dog Awards" : "Top Dog", 
                "New York Marathon" : "Fastest Dog", 
                "Sumo 2020" : "Biggest Dog"
            }
        }
    }
';
SELECT JSON_VALUE(
    @json_document, 
    '$.details.awards.Florida Dog Awards'
    ) AS Result;

Resultaat:

+---------+
| Result  |
+---------+
| Top Dog |
+---------+

Niet-scale waarden

Poging om een ​​niet-scalaire waarde te retourneren (bijvoorbeeld een object of een array) retourneert NULL .

Voorbeeld:

SET @json_document = '
    { 
        "_id" : 1, 
        "name" : "Wag", 
        "details" : {
            "type" : "Dog", 
            "weight" : 20,
            "awards" : { 
                "Florida Dog Awards" : "Top Dog", 
                "New York Marathon" : "Fastest Dog", 
                "Sumo 2020" : "Biggest Dog"
            }
        }
    }
';
SELECT JSON_VALUE(
    @json_document, 
    '$.details.awards'
    ) AS Result;

Resultaat:

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

Gebruik de JSON_QUERY() . om een ​​niet-scalaire waarde te retourneren functie of de JSON_EXTRACT() functie.

Nullargumenten

Als een argument NULL is , het resultaat is NULL :

SELECT 
    JSON_VALUE(null, '$.type'),
    JSON_VALUE('{"a":1}', null);

Resultaat:

+----------------------------+-----------------------------+
| JSON_VALUE(null, '$.type') | JSON_VALUE('{"a":1}', null) |
+----------------------------+-----------------------------+
| NULL                       | NULL                        |
+----------------------------+-----------------------------+

Onjuist aantal parameters

Het verstrekken van geen argumenten resulteert in een fout:

SELECT JSON_VALUE();

Resultaat:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_VALUE'

Hetzelfde geldt wanneer u te weinig of te veel argumenten geeft:

SELECT JSON_VALUE('{ "a": 1}');

Resultaat:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_VALUE'

  1. Een selectie maken met array bevat waardeclausule in psql

  2. PHP / MySQL bouwboommenu

  3. Standaardwaarden van parameters parseren met PowerShell - Deel 2

  4. Query-optimalisatie in PostgreSQL. UITLEG Basisprincipes - Deel 2