sql >> Database teknologi >  >> RDS >> MariaDB

MariaDB JSON_KEYS() Forklaret

I MariaDB, JSON_KEYS() er en indbygget funktion, der returnerer en række af nøglerne på øverste niveau fra et JSON-dokument. Hvis en sti er angivet, returnerer den nøglerne på øverste niveau fra den sti.

Det udelukker nøgler fra indlejrede underobjekter på det angivne niveau.

Hvis det valgte objekt er tomt, returneres et tomt array.

Syntaks

Syntaksen ser sådan ud:

JSON_KEYS(json_doc[, path])

Hvor json_doc er JSON-dokumentet og path er en sti i dokumentet.

Eksempel

Her er et eksempel til at demonstrere.

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

Resultat:

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

Angivelse af en sti

Her er et eksempel på angivelse af en sti 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ævnt er delobjekter udelukket fra resultatet.

Ikke-eksisterende stier

At sende en sti, der ikke findes i JSON-dokumentet, resulterer i NULL .

Eksempel:

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   |
+--------+

Tomme objekter

Hvis det valgte objekt er tomt, returneres et tomt array:

SELECT JSON_KEYS('{}');

Resultat:

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

Nul-argumenter

Hvis et argument er NULL , resultatet er 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                       |
+-----------------+---------------------------+----------------------------+

Forkert parameterantal

Angivelse af ingen argumenter resulterer i en fejl:

SELECT JSON_KEYS();

Resultat:

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

Det er det samme, når du giver for få eller for mange argumenter:

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

Resultat:

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

  1. Sådan oprettes og vedligeholdes MySQL-databaser i cPanel

  2. Oracle trigger fejl ORA-04091

  3. Hvad skal man gøre (eller ikke gøre) med top ventestatistikker

  4. Brug en trigger til at stoppe en indsættelse eller opdatering