Mysql
 sql >> Base de données >  >> RDS >> Mysql

JSON_TYPE() - Obtenir le type d'une valeur JSON dans MySQL

Dans MySQL, le JSON_TYPE() La fonction renvoie le type d'une valeur JSON. Plus précisément, il renvoie un utf8mb4 chaîne indiquant le type de la valeur.

Vous fournissez la valeur JSON comme argument.

Syntaxe

La syntaxe ressemble à ceci :

JSON_TYPE(json_val)

json_val est la valeur JSON pour laquelle renvoyer le type. Cela peut être un objet, un tableau ou un type scalaire.

Exemple 1 – Objet

Voici un exemple où la valeur est un objet.

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

Résultat :

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

Exemple 2 – Tableau

Voici un exemple de tableau.

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

Résultat :

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

Exemple 3 - Extraire des données d'un tableau

Vous pouvez également obtenir le type des éléments individuels du tableau.

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

Résultat :

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

Exemple 4 - Extraire des données d'un objet

Il en va de même pour les membres d'un objet.

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

Résultat :

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

Dans ce cas, la valeur était la chaîne littérale "True" .

Voici un autre exemple, mais cette fois en utilisant la valeur booléenne true .

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

Résultat :

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

Exemple 5 - Requête de base de données

Cet exemple utilise une colonne de base de données.

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

Résultat :

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