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

MariaDB JSON_TYPE() Objaśnienie

W MariaDB, JSON_TYPE() to wbudowana funkcja, która zwraca typ wartości JSON w postaci ciągu.

Składnia

Składnia wygląda tak:

JSON_TYPE(json_val)

Gdzie json_val jest wartością, dla której należy zwrócić typ.

Typy obiektów

Możliwe typy zwrotów są wymienione w poniższej tabeli:

Typ zwrotu Wartość Przykład
ARRAY Tablica JSON. [1, 2, 3]
OBJECT Obiekt JSON. {"a":"1"}
BOOLEAN JSON prawdziwy/fałszywy literał. true lub false
DOUBLE Liczba z co najmniej jedną liczbą zmiennoprzecinkową po przecinku. 1.2
INTEGER Liczba bez liczby zmiennoprzecinkowej po przecinku. 1
NULL JSON null dosłowny. Jest to zwracane jako ciąg i nie należy mylić z SQL NULL wartość. null
STRING ciąg JSON. "bird"

Przykład

Oto przykład do zademonstrowania.

SET @json = '
    { 
        "name" : "Fluffy", 
        "type" : "Cat" 
    }
';

SELECT JSON_TYPE(@json);

Wynik:

+------------------+
| JSON_TYPE(@json) |
+------------------+
| OBJECT           |
+------------------+

W tym przykładzie przekazałem cały dokument JSON, który ma typ OBJECT .

Oto więcej przykładów:

SELECT 
    JSON_TYPE('[1, 2, 3]'),
    JSON_TYPE('{ "a" : 1 }'),
    JSON_TYPE('true'),
    JSON_TYPE('false'),
    JSON_TYPE(10.59),
    JSON_TYPE(10),
    JSON_TYPE(null),
    JSON_TYPE('"Fuzzy Smith"');

Wynik (przy użyciu wyjścia pionowego):

    JSON_TYPE('[1, 2, 3]'): ARRAY
  JSON_TYPE('{ "a" : 1 }'): OBJECT
         JSON_TYPE('true'): BOOLEAN
        JSON_TYPE('false'): BOOLEAN
          JSON_TYPE(10.59): DOUBLE
             JSON_TYPE(10): INTEGER
           JSON_TYPE(null): NULL
JSON_TYPE('"Fuzzy Smith"'): STRING

Wyodrębnij wartość z dokumentu JSON

W poprzednich przykładach przekazałem każdą wartość bezpośrednio do funkcji jako literał.

Możemy połączyć JSON_TYPE() z innymi funkcjami, takimi jak JSON_EXTRACT() aby znaleźć typ wartości w większym dokumencie JSON. Oto przykład wyodrębniania wartości z dokumentu JSON w celu poznania jego typu:

SET @json = '
    { 
        "name" : "Wag", 
        "scores" : [8, 0, 9] 
    }
';

SELECT 
    JSON_TYPE(JSON_EXTRACT(@json, '$.name')) AS Result;

Wynik:

+--------+
| Result |
+--------+
| STRING |
+--------+

Oto kolejny przykład, który zwraca więcej typów:

SET @json = '
    { 
        "name" : "Wag", 
        "scores" : [8, 0, 9],
        "weight" : 10.50,
        "height" : null,
        "age" : 4
    }
';

SELECT 
    JSON_TYPE(
        JSON_EXTRACT(@json, '$.name')
        ) AS a,
    JSON_TYPE(
        JSON_EXTRACT(@json, '$.scores')
        ) AS b,
    JSON_TYPE(
        JSON_EXTRACT(@json, '$.scores[0]')
        ) AS c,
    JSON_TYPE(
        JSON_EXTRACT(@json, '$.weight')
        ) AS d,
    JSON_TYPE(
        JSON_EXTRACT(@json, '$.height')
        ) AS e,
    JSON_TYPE(
        JSON_EXTRACT(@json, '$.age')
        ) AS f;

Wynik:

+--------+-------+---------+--------+------+---------+
| a      | b     | c       | d      | e    | f       |
+--------+-------+---------+--------+------+---------+
| STRING | ARRAY | INTEGER | DOUBLE | NULL | INTEGER |
+--------+-------+---------+--------+------+---------+

Argument zerowy

Jeśli argumentem jest null , a następnie null jest zwracany.

SELECT JSON_TYPE(null);

Wynik:

+-----------------+
| JSON_TYPE(null) |
+-----------------+
| NULL            |
+-----------------+

Nieprawidłowa liczba parametrów

Wywołanie JSON_TYPE() bez argumentu powoduje błąd:

SELECT JSON_TYPE();

Wynik:

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

Tak samo jest, gdy przekazywanych jest zbyt wiele argumentów:

SELECT JSON_TYPE(1, 2);

Wynik:

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

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

  2. Funkcje daty i czasu MariaDB (pełna lista)

  3. Kopie zapasowe baz danych — porównanie MariaDB Mariabackup i Percona Xtrabackup

  4. Jak działa krok JSONPath Wildcard (**) w MariaDB

  5. Jak OCTET_LENGTH() działa w MariaDB