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

MariaDB JSON_TYPE() vysvětleno

V MariaDB, JSON_TYPE() je vestavěná funkce, která vrací typ hodnoty JSON jako řetězec.

Syntaxe

Syntaxe vypadá takto:

JSON_TYPE(json_val)

Kde json_val je hodnota, pro kterou se má vrátit typ.

Typy objektů

Možné typy návratů jsou uvedeny v následující tabulce:

Typ návratu Hodnota Příklad
ARRAY Pole JSON. [1, 2, 3]
OBJECT Objekt JSON. {"a":"1"}
BOOLEAN Literál JSON true/false. true nebo false
DOUBLE Číslo s alespoň jedním desetinným místem s plovoucí desetinnou čárkou. 1.2
INTEGER Číslo bez desetinné čárky. 1
NULL JSON null doslovný. Toto je vráceno jako řetězec a nesmí být zaměňováno s SQL NULL hodnotu. null
STRING Řetězec JSON. "bird"

Příklad

Zde je příklad k demonstraci.

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

SELECT JSON_TYPE(@json);

Výsledek:

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

V tomto příkladu jsem předal celý dokument JSON, který má typ OBJECT .

Zde jsou další příklady:

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"');

Výsledek (při použití vertikálního výstupu):

    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

Extrahujte hodnotu z dokumentu JSON

V předchozích příkladech jsem každou hodnotu předal přímo funkci jako literál.

Můžeme kombinovat JSON_TYPE() s dalšími funkcemi, jako je JSON_EXTRACT() zjistit typ hodnoty ve větším dokumentu JSON. Zde je příklad extrahování hodnoty z dokumentu JSON za účelem zjištění jeho typu:

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

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

Výsledek:

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

Zde je další příklad, který vrací více typů:

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;

Výsledek:

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

Nulový argument

Pokud je argument null a poté null je vráceno.

SELECT JSON_TYPE(null);

Výsledek:

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

Nesprávný počet parametrů

Volání JSON_TYPE() bez argumentu vede k chybě:

SELECT JSON_TYPE();

Výsledek:

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

Je to stejné, když je předáno příliš mnoho argumentů:

SELECT JSON_TYPE(1, 2);

Výsledek:

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

  1. Parametr časového limitu IDLE v Oracle

  2. Tipy k tabulce Microsoft Access – triky a pokyny, část 5

  3. Jak funguje CONVERT_TZ() v MariaDB

  4. TO_DAYS() Příklady – MySQL