JSON_TABLE

PostgreSQL 🔴 Senior

Définition

Fonction SQL/JSON introduite dans PostgreSQL 17 (26 septembre 2024) qui transforme un document JSON en vue relationnelle exploitable dans une clause FROM. La clause COLUMNS définit le mapping de chaque chemin JSON vers une colonne typée, avec NESTED PATH pour extraire des niveaux imbriques.

Analogie

Comme déplier une feuille pliée en accordéon (JSON imbrique) pour en faire un tableau plat lisible ligne par ligne.

Exemple de code

SELECT jt.* FROM my_films,
  JSON_TABLE(js, '$.favorites[*]' COLUMNS (
    id FOR ORDINALITY,
    kind text PATH '$.kind',
    title text PATH '$.films[*].title' WITH WRAPPER
  )) AS jt;

Cas d'usage

Interroger un champ JSONB avec la même syntaxe qu'une table SQL classique, sans fonctions jsonb_* imbriquées.

Anti-pattern

Continuer a empiler jsonb_array_éléments() et jsonb_extract_path_text() alors que JSON_TABLE exprime la même logique en une seule clause lisible.

Termes liés

#sgbd#interview#database#postgresql#pg17

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre