sql >> Databasteknik >  >> RDS >> MariaDB

MariaDB JSON_KEYS() Förklarad

I MariaDB, JSON_KEYS() är en inbyggd funktion som returnerar en uppsättning av nycklar på toppnivå från ett JSON-dokument. Om en sökväg tillhandahålls, returnerar den toppnivånycklarna från den sökvägen.

Den exkluderar nycklar från kapslade underobjekt på den angivna nivån.

Om det valda objektet är tomt returneras en tom array.

Syntax

Syntaxen ser ut så här:

JSON_KEYS(json_doc[, path])

Där json_doc är JSON-dokumentet och path är en sökväg i dokumentet.

Exempel

Här är ett exempel att visa.

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

Resultat:

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

Ange en sökväg

Här är ett exempel på hur du anger en sökväg i dokumentet:

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;

Resultat:

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

Som nämnts exkluderas delobjekt från resultatet.

Icke-existerande vägar

Att skicka en sökväg som inte finns i JSON-dokumentet resulterar i NULL .

Exempel:

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;

Resultat:

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

Tömma objekt

Om det valda objektet är tomt returneras en tom array:

SELECT JSON_KEYS('{}');

Resultat:

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

Nollargument

Om något argument är NULL , resultatet är NULL :

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

Resultat:

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

Felaktig parameterräkning

Att inte tillhandahålla några argument resulterar i ett fel:

SELECT JSON_KEYS();

Resultat:

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

Det är samma sak när du ger för få eller för många argument:

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

Resultat:

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

  1. mysql PDO hur man binder LIKE

  2. WHERE IN (uppsättning av ID)

  3. EF 4, hur man lägger till delklasser

  4. PostgreSQL skapa tabell om den inte finns