MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

MariaDB JSON_TYPE() erklärt

In MariaDB JSON_TYPE() ist eine integrierte Funktion, die den Typ eines JSON-Werts als Zeichenfolge zurückgibt.

Syntax

Die Syntax sieht so aus:

JSON_TYPE(json_val)

Wobei json_val ist der Wert, für den der Typ zurückgegeben werden soll.

Objekttypen

Die möglichen Rückgabetypen sind in der folgenden Tabelle aufgelistet:

Rückgabetyp Wert Beispiel
ARRAY JSON-Array. [1, 2, 3]
OBJECT JSON-Objekt. {"a":"1"}
BOOLEAN JSON-Wahr/Falsch-Literal. true oder false
DOUBLE Eine Zahl mit mindestens einer Gleitkommazahl. 1.2
INTEGER Eine Zahl ohne Gleitkommazahl. 1
NULL JSON null wörtlich. Dieser wird als String zurückgegeben und ist nicht mit dem SQL NULL zu verwechseln Wert. null
STRING JSON-String. "bird"

Beispiel

Hier ist ein Beispiel zur Veranschaulichung.

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

SELECT JSON_TYPE(@json);

Ergebnis:

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

In diesem Beispiel habe ich ein ganzes JSON-Dokument übergeben, das den Typ OBJECT hat .

Hier sind weitere Beispiele:

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

Ergebnis (bei vertikaler Ausgabe):

    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

Extrahieren Sie den Wert aus einem JSON-Dokument

In den vorherigen Beispielen habe ich jeden Wert direkt als Literal an die Funktion übergeben.

Wir können JSON_TYPE() kombinieren mit anderen Funktionen wie JSON_EXTRACT() um den Typ eines Werts innerhalb eines größeren JSON-Dokuments herauszufinden. Hier ist ein Beispiel für das Extrahieren eines Werts aus einem JSON-Dokument, um seinen Typ herauszufinden:

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

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

Ergebnis:

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

Hier ist ein weiteres Beispiel, das mehr Typen zurückgibt:

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;

Ergebnis:

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

Null-Argument

Wenn das Argument null ist , dann null zurückgegeben wird.

SELECT JSON_TYPE(null);

Ergebnis:

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

Falsche Parameteranzahl

Aufruf von JSON_TYPE() ohne Argument führt zu einem Fehler:

SELECT JSON_TYPE();

Ergebnis:

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

Das Gleiche gilt, wenn zu viele Argumente übergeben werden:

SELECT JSON_TYPE(1, 2);

Ergebnis:

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