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

JSON_KEYS() - Renvoie les clés d'un objet JSON dans MySQL

Dans MySQL, le JSON_KEYS() La fonction renvoie les clés à partir de la valeur de niveau supérieur d'un objet JSON. Les clés sont renvoyées sous la forme d'un tableau JSON ou, s'il s'agit d'un path argument est donné, les clés de niveau supérieur du chemin sélectionné.

Vous fournissez le document JSON comme argument à la fonction.

Vous pouvez également (facultatif) fournir un deuxième argument pour spécifier où le chemin "de niveau supérieur" commence à partir du document JSON.

Syntaxe

La syntaxe ressemble à ceci :

JSON_KEYS(json_doc[, path])

json_doc est le document JSON et le path est un argument facultatif pour déterminer où commence le chemin "de niveau supérieur" dans le document JSON.

Le tableau de résultat est vide si l'objet sélectionné est vide. Si la valeur de niveau supérieur a des sous-objets imbriqués, la valeur de retour n'inclut pas les clés de ces sous-objets.

Exemple 1 - Utilisation de base

Voici un exemple pour illustrer.

SELECT JSON_KEYS('{"a": 1, "b": 2, "c": 3}') AS 'Result';

Résultat :

+-----------------+
| Result          |
+-----------------+
| ["a", "b", "c"] |
+-----------------+

Voici un autre exemple :

SELECT 
  JSON_KEYS('{"Name": "Bart", "Age": 10}') AS 'Result';

Résultat :

+-----------------+
| Result          |
+-----------------+
| ["Age", "Name"] |
+-----------------+

Exemple 2 - Spécifier un chemin

Voici un exemple de spécification d'un chemin. Cela nous permet d'obtenir les clés d'un objet imbriqué (au lieu d'être limité à l'objet de niveau supérieur de l'ensemble du document JSON).

SELECT 
  JSON_KEYS('{"a": 1, "b": 2, "c": {"d": 3, "e": 4, "f": 5}}', '$.c') AS 'Result';

Résultat :

+-----------------+
| Result          |
+-----------------+
| ["d", "e", "f"] |
+-----------------+

Exemple 3 - Chemin inexistant

Si vous spécifiez un chemin qui n'existe pas, une valeur NULL est renvoyée.

SELECT 
  JSON_KEYS('{"a": 1, "b": 2, "c": {"d": 3, "e": 4, "f": 5}}', '$.z') AS 'Result';

Résultat :

+--------+
| Result |
+--------+
| NULL   |
+--------+

Vous obtiendrez également une valeur NULL si l'un des arguments est NULL ou si le premier argument n'est pas un objet JSON.

Exemple 4 – Tableaux

Les tableaux ne sont pas des objets et ne contiennent pas de paires clé/valeur. Par conséquent, vous obtiendrez une valeur NULL si vous essayez de renvoyer des clés à partir d'un tableau.

SELECT JSON_KEYS('[1, 2, 3]') AS 'Result';

Résultat :

+--------+
| Result |
+--------+
| NULL   |
+--------+

Cependant, si l'un des éléments du tableau contient un objet, vous pouvez toujours utiliser le path argument pour obtenir les clés de cet objet.

SELECT JSON_KEYS('[1, 2, {"a": 1, "b": 2}]', '$[2]') AS 'Result';

Résultat :

+------------+
| Result     |
+------------+
| ["a", "b"] |
+------------+

Exemple 5 – Objets vides

Si l'objet sélectionné est vide, vous obtiendrez un tableau vide.

SELECT JSON_KEYS('{}') AS 'Result';

Résultat :

+--------+
| Result |
+--------+
| []     |
+--------+