Aller au contenu

Fonctions JSON (JSON1)#

avancé

Pertinent uniquement si le schéma stocke réellement du JSON. Dans une base relationnelle normalisée, ces fonctions ne servent pas.

Fonction Description
JSON(x) Valide et normalise un JSON
JSON_EXTRACT(x, chemin, ...) Extrait une valeur (alias -> / ->>)
JSON_ARRAY(v1, v2, ...) Construit un tableau JSON
JSON_OBJECT(cle, val, ...) Construit un objet JSON
JSON_ARRAY_LENGTH(x [, chemin]) Longueur d'un tableau
JSON_TYPE(x [, chemin]) Type de la valeur (object, array, text, ...)
JSON_VALID(x) 1 si JSON valide
JSON_SET(x, chemin, valeur, ...) Définit/insère une valeur
JSON_INSERT(x, chemin, valeur, ...) Insère si absent
JSON_REPLACE(x, chemin, valeur, ...) Remplace si présent
JSON_REMOVE(x, chemin, ...) Supprime une clé/valeur
JSON_EACH(x) / JSON_TREE(x) Fonctions table pour itérer

Exemples#

SELECT JSON_EXTRACT('{"nom":"Alice","age":20}', '$.nom');   -- "Alice"
SELECT '{"nom":"Alice"}' -> '$.nom';                          -- "Alice" (JSON)
SELECT '{"nom":"Alice"}' ->> '$.nom';                         -- Alice (texte brut)

SELECT JSON_SET('{"a":1}', '$.b', 2);       -- {"a":1,"b":2}

SELECT key, value FROM JSON_EACH('[10,20,30]');

Colonne générée depuis JSON#

CREATE TABLE evenements (
  id INTEGER PRIMARY KEY,
  data TEXT,
  nom TEXT GENERATED ALWAYS AS (JSON_EXTRACT(data, '$.nom')) VIRTUAL
);

SQLite

-> et ->> disponibles depuis SQLite 3.38 (syntaxe PostgreSQL). Extension JSON1 intégrée par défaut depuis SQLite 3.38 (avant, activation à la compilation requise).