MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

MariaDB JSON_KEYS() Objaśnienie

W MariaDB, JSON_KEYS() to wbudowana funkcja, która zwraca tablicę kluczy najwyższego poziomu z dokumentu JSON. Jeśli podana jest ścieżka, zwraca ona klucze najwyższego poziomu z tej ścieżki.

Wyklucza klucze z zagnieżdżonych obiektów podrzędnych na określonym poziomie.

Ponadto, jeśli wybrany obiekt jest pusty, zwracana jest pusta tablica.

Składnia

Składnia wygląda tak:

JSON_KEYS(json_doc[, path])

Gdzie json_doc jest dokumentem JSON i path to ścieżka w dokumencie.

Przykład

Oto przykład do zademonstrowania.

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

Wynik:

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

Określanie ścieżki

Oto przykład określenia ścieżki w dokumencie:

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;

Wynik:

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

Jak wspomniano, podobiekty są wykluczone z wyniku.

Nieistniejące ścieżki

Przekazanie ścieżki, która nie istnieje w dokumencie JSON, daje w wyniku NULL .

Przykład:

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;

Wynik:

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

Puste obiekty

Jeśli wybrany obiekt jest pusty, zwracana jest pusta tablica:

SELECT JSON_KEYS('{}');

Wynik:

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

Argumenty zerowe

Jeśli jakikolwiek argument ma wartość NULL , wynik to NULL :

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

Wynik:

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

Nieprawidłowa liczba parametrów

Brak argumentów skutkuje błędem:

SELECT JSON_KEYS();

Wynik:

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

Tak samo jest, gdy podasz za mało lub za dużo argumentów:

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

Wynik:

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak DATE_SUB() działa w MariaDB

  2. Funkcja AVG() w MariaDB

  3. Ustawienia daty i godziny dostępne w MariaDB

  4. Migracja z bazy danych Oracle do MariaDB — szczegółowe informacje

  5. Co nowego w MariaDB 10.4