sql >> Databáze >  >> RDS >> MariaDB

MariaDB JSON_KEYS() Vysvětleno

V MariaDB, JSON_KEYS() je vestavěná funkce, která vrací pole klíčů nejvyšší úrovně z dokumentu JSON. Pokud je zadána cesta, vrátí klíče nejvyšší úrovně z této cesty.

Vyloučí klíče z vnořených dílčích objektů na zadané úrovni.

Pokud je vybraný objekt prázdný, vrátí se prázdné pole.

Syntaxe

Syntaxe vypadá takto:

JSON_KEYS(json_doc[, path])

Kde json_doc je dokument JSON a path je cesta v dokumentu.

Příklad

Zde je příklad k demonstraci.

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

Výsledek:

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

Určení cesty

Zde je příklad zadání cesty v dokumentu:

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;

Výsledek:

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

Jak již bylo zmíněno, dílčí objekty jsou z výsledku vyloučeny.

Neexistující cesty

Předání cesty, která v dokumentu JSON neexistuje, má za následek NULL .

Příklad:

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;

Výsledek:

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

Prázdné objekty

Pokud je vybraný objekt prázdný, vrátí se prázdné pole:

SELECT JSON_KEYS('{}');

Výsledek:

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

Nulové argumenty

Pokud je některý argument NULL , výsledkem je NULL :

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

Výsledek:

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

Nesprávný počet parametrů

Pokud neposkytnete žádné argumenty, dojde k chybě:

SELECT JSON_KEYS();

Výsledek:

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

Je to stejné, když poskytnete příliš málo nebo příliš mnoho argumentů:

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

Výsledek:

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

  1. Funkce MySQL SIGN() – Zjistěte, zda je číslo v MySQL kladné nebo záporné

  2. Klauzule OVER v Oracle

  3. Víceřádkové aktualizace PostgreSQL v Node.js

  4. Nemáte zámek databáze! v androidu