Mysql
 sql >> Database >  >> RDS >> Mysql

JSON_TYPE() – Ottieni un tipo di valore JSON in MySQL

In MySQL, il JSON_TYPE() La funzione restituisce il tipo di un valore JSON. Più specificamente, restituisce un utf8mb4 stringa che indica il tipo del valore.

Fornisci il valore JSON come argomento.

Sintassi

La sintassi è questa:

JSON_TYPE(json_val)

Dove json_val è il valore JSON per il quale restituire il tipo. Può essere un oggetto, un array o un tipo scalare.

Esempio 1 – Oggetto

Ecco un esempio in cui il valore è un oggetto.

SET @data = '{"Name": "Homer", "Stupid": true}';
SELECT JSON_TYPE(@data) 'JSON Type';

Risultato:

+-----------+
| JSON Type |
+-----------+
| OBJECT    |
+-----------+

Esempio 2 – Matrice

Ecco un esempio di array.

SET @data = '[1, 2, 3]';
SELECT JSON_TYPE(@data) 'JSON Type';

Risultato:

+-----------+
| JSON Type |
+-----------+
| ARRAY     |
+-----------+

Esempio 3:estrazione di dati da un array

Puoi anche ottenere il tipo dei singoli elementi nell'array.

SET @data = '[1, 2, 3]';
SELECT 
  JSON_EXTRACT(@data, '$[1]') 'Data',
  JSON_TYPE(JSON_EXTRACT(@data, '$[1]')) 'JSON Type';

Risultato:

+------+-----------+
| Data | JSON Type |
+------+-----------+
| 2    | INTEGER   |
+------+-----------+

Esempio 4 – Estrarre dati da un oggetto

Lo stesso vale per i membri di un oggetto.

SET @data = '{"Name": "Homer", "Stupid": "True"}';
SELECT 
  JSON_EXTRACT(@data, '$.Stupid') 'Data',
  JSON_TYPE(JSON_EXTRACT(@data, '$.Stupid')) 'JSON Type';

Risultato:

+--------+-----------+
| Data   | JSON Type |
+--------+-----------+
| "True" | STRING    |
+--------+-----------+

In quel caso, il valore era la stringa letterale "True" .

Ecco un altro esempio, ma questa volta utilizzando il valore booleano true .

SET @data = '{"Name": "Homer", "Stupid": true}';
SELECT 
  JSON_EXTRACT(@data, '$.Stupid') 'Data',
  JSON_TYPE(JSON_EXTRACT(@data, '$.Stupid')) 'JSON Type';

Risultato:

+------+-----------+
| Data | JSON Type |
+------+-----------+
| true | BOOLEAN   |
+------+-----------+

Esempio 5 – Query database

Questo esempio utilizza una colonna del database.

SELECT 
  Contents,
  JSON_TYPE(Contents) 'Contents',
  JSON_TYPE(JSON_EXTRACT(Contents, '$.Name')) 'Name'
FROM Collections 
WHERE CollectionId = 4;

Risultato:

+--------------------------------+----------+--------+
| Contents                       | Contents | Name   |
+--------------------------------+----------+--------+
| {"Name": "Homer", "Stupid": 1} | OBJECT   | STRING |
+--------------------------------+----------+--------+