sql >> Database teknologi >  >> RDS >> MariaDB

MariaDB JSON_TYPE() Forklaret

I MariaDB, JSON_TYPE() er en indbygget funktion, der returnerer typen af ​​en JSON-værdi som en streng.

Syntaks

Syntaksen ser sådan ud:

JSON_TYPE(json_val)

Hvor json_val er den værdi, som typen skal returneres for.

Objekttyper

De mulige returtyper er angivet i følgende tabel:

Returtype Værdi Eksempel
ARRAY JSON-array. [1, 2, 3]
OBJECT JSON-objekt. {"a":"1"}
BOOLEAN JSON sand/falsk bogstavelig. true eller false
DOUBLE Et tal med mindst én decimal med flydende decimal. 1.2
INTEGER Et tal uden en flydende decimal. 1
NULL JSON null bogstavelig. Dette returneres som en streng og må ikke forveksles med SQL NULL værdi. null
STRING JSON-streng. "bird"

Eksempel

Her er et eksempel til at demonstrere.

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

SELECT JSON_TYPE(@json);

Resultat:

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

I dette eksempel har jeg bestået et helt JSON-dokument, som har en type OBJECT .

Her er flere eksempler:

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

Resultat (ved hjælp af lodret output):

    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

Udtræk værdien fra et JSON-dokument

I de foregående eksempler sendte jeg hver værdi direkte til funktionen som en bogstavelig.

Vi kan kombinere JSON_TYPE() med andre funktioner, såsom JSON_EXTRACT() for at finde ud af typen af ​​en værdi i et større JSON-dokument. Her er et eksempel på at udtrække en værdi fra et JSON-dokument for at finde ud af dets type:

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

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

Resultat:

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

Her er et andet eksempel, der returnerer flere typer:

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;

Resultat:

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

Nul-argument

Hvis argumentet er null , derefter null er returneret.

SELECT JSON_TYPE(null);

Resultat:

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

Forkert parameterantal

Kalder JSON_TYPE() uden et argument resulterer i en fejl:

SELECT JSON_TYPE();

Resultat:

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

Det er det samme, når der sendes for mange argumenter:

SELECT JSON_TYPE(1, 2);

Resultat:

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

  1. SQL kommasepareret række med Group By-sætning

  2. Hvad er det bedste værktøj til at sammenligne to SQL Server-databaser (skema og data)?

  3. Parsing tnsnames.ora i Visual C# 2008

  4. Sådan implementeres MariaDB Cluster 10.5 for høj tilgængelighed