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

MariaDB JSON_VALUE() Objaśnienie

W MariaDB, JSON_VALUE() to wbudowana funkcja, która zwraca wartość skalarną z dokumentu JSON. Dokładniej, zwraca skalar określony przez podaną ścieżkę.

Składnia

Składnia wygląda tak:

JSON_VALUE(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_VALUE(@json_document, '$.name');

Wynik:

+--------------------------------------+
| JSON_VALUE(@json_document, '$.name') |
+--------------------------------------+
| Wag                                  |
+--------------------------------------+

Nieistniejąca ścieżka

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

Przykład:

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

Wynik:

+---------------------------------------+
| JSON_VALUE(@json_document, '$.color') |
+---------------------------------------+
| NULL                                  |
+---------------------------------------+

Tablice

Oto przykład zwracania danych z tablicy:

SET @json_document = '
    { 
        "_id" : 1, 
        "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] 
    }
';
SELECT JSON_VALUE(@json_document, '$.awards[1]');

Wynik:

+-------------------------------------------+
| JSON_VALUE(@json_document, '$.awards[1]') |
+-------------------------------------------+
| Best Dog                                  |
+-------------------------------------------+

Tablice są liczone od zera, więc $.awards[1] wyodrębnia drugi element awards tablica.

Obiekty zagnieżdżone

Oto przykład pobierania wartości z obiektu zagnieżdżonego w innym obiekcie:

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_VALUE(
    @json_document, 
    '$.details.awards.Florida Dog Awards'
    ) AS Result;

Wynik:

+---------+
| Result  |
+---------+
| Top Dog |
+---------+

Wartości nieskalarne

Próba zwrócenia wartości nieskalarnej (np. obiektu lub tablicy) zwraca 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_VALUE(
    @json_document, 
    '$.details.awards'
    ) AS Result;

Wynik:

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

Aby zwrócić wartość nieskalarną, użyj JSON_QUERY() funkcja lub JSON_EXTRACT() funkcja.

Argumenty zerowe

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

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

Wynik:

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

Nieprawidłowa liczba parametrów

Brak argumentów skutkuje błędem:

SELECT JSON_VALUE();

Wynik:

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

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

SELECT JSON_VALUE('{ "a": 1}');

Wynik:

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

  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 CHR() działa w MariaDB

  2. Jak działa MONTH() w MariaDB

  3. Poprawka:Odmowa dostępu dla użytkownika „root”@”localhost” w MariaDB

  4. Jak wygenerować losową liczbę całkowitą w zakresie w MariaDB?

  5. ClusterControl 1.5 — automatyczna weryfikacja kopii zapasowej, budowanie urządzenia podrzędnego z kopii zapasowej i integracja z chmurą