sql >> Database >  >> RDS >> MariaDB

MariaDB JSON_KEYS() uitgelegd

In MariaDB, JSON_KEYS() is een ingebouwde functie die een array van de sleutels op het hoogste niveau uit een JSON-document retourneert. Als er een pad is opgegeven, worden de sleutels op het hoogste niveau van dat pad geretourneerd.

Het sluit sleutels uit van geneste subobjecten op het opgegeven niveau.

Als het geselecteerde object leeg is, wordt er ook een lege array geretourneerd.

Syntaxis

De syntaxis gaat als volgt:

JSON_KEYS(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_KEYS(@json_document);

Resultaat:

+----------------------------+
| JSON_KEYS(@json_document)  |
+----------------------------+
| ["name", "type", "weight"] |
+----------------------------+

Een pad specificeren

Hier is een voorbeeld van het specificeren van een pad binnen het document:

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_KEYS(
    @json_document, 
    '$.details'
    ) AS Result;

Resultaat:

+------------------------------+
| Result                       |
+------------------------------+
| ["type", "weight", "awards"] |
+------------------------------+

Zoals vermeld, worden subobjecten uitgesloten van het resultaat.

Niet-bestaande paden

Het doorgeven van een pad dat niet bestaat in het JSON-document resulteert in 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_KEYS(
    @json_document, 
    '$.wrong'
    ) AS Result;

Resultaat:

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

Lege objecten

Als het geselecteerde object leeg is, wordt een lege array geretourneerd:

SELECT JSON_KEYS('{}');

Resultaat:

+-----------------+
| JSON_KEYS('{}') |
+-----------------+
| []              |
+-----------------+

Nullargumenten

Als een argument NULL is , het resultaat is NULL :

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

Resultaat:

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

Onjuist aantal parameters

Het verstrekken van geen argumenten resulteert in een fout:

SELECT JSON_KEYS();

Resultaat:

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

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

SELECT JSON_KEYS('{ "a": 1}', 1, 2);

Resultaat:

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

  1. Verwijs naar een alias voor de kolomnaam in de WHERE-component

  2. De regels van Codd in SQL

  3. Haal het juiste deel van een string in SQL Server (T-SQL)

  4. Hoe het SQL-queryresultaat naar PANDAS-gegevensstructuur te converteren?