Accéder au contenu principal
Documents
Gestion des tableaux et des schémasSyntaxe de baseDéclencheursBases de donnéesFonctions de la dateFonctions des chaînes de caractèresFonctions mathématiquesFonctions JSONIndexes

PostgreSQL JSON vs. JSONB

PostgreSQL fournit des fonctions JSON pour manipuler et interroger les données JSON stockées dans la base de données. Ces fonctions sont essentielles pour traiter les types de données JSON et JSONB, permettant aux utilisateurs d'extraire et de manipuler efficacement le contenu JSON.

Utilisation

Les fonctions JSON de PostgreSQL sont utilisées pour accéder et manipuler les types de données JSON et JSONB, qui sont idéales pour stocker des données semi-structurées. Ces fonctions permettent d'effectuer des opérations telles que l'extraction d'éléments, la conversion de formats de données et la recherche de motifs.

sql
-- Extracting a JSON object field by key
SELECT json_column -> 'key' FROM table_name;

-- Extracting a JSONB object field by key
SELECT jsonb_column -> 'key' FROM table_name;

Dans ces syntaxes, `->` est utilisé pour extraire un objet JSON, tandis que `->>` est utilisé pour extraire une valeur textuelle d'une colonne JSON ou JSONB.

Fonctions JSON supplémentaires

Voici quelques fonctions supplémentaires qui peuvent s'avérer utiles :

  • `jsonb_set`: Met à jour les valeurs d'un document JSONB.
  • `jsonb_insert`: Insère une nouvelle valeur dans un document JSONB à un chemin spécifié.
  • `jsonb_path_query`: Extrait les valeurs JSONB correspondant à une requête JSONPath spécifiée.

Exemples

1. Extraction d'un champ JSON

sql
SELECT data -> 'name' AS name
FROM users;

Cet exemple extrait la valeur du champ `name` d'une colonne JSON `data` dans le tableau `users`.

2. Conversion de JSON en JSONB

sql
SELECT data::jsonb
FROM users;

Ici, une colonne JSON est transformée en JSONB, ce qui offre des avantages tels que l'efficacité du stockage, l'amélioration des performances et une indexation et une interrogation plus efficaces.

3. Requête complexe avec JSONB

sql
SELECT id, jsonb_array_elements(data->'items')->>'product_name' AS product_name
FROM orders;

Cette requête extrait `product_name` de chaque élément du tableau `items` dans une colonne JSONB `data`.

Conseils et bonnes pratiques

  • Choisissez JSONB pour l'efficacité. JSONB est généralement plus rapide pour l'interrogation et l'indexation et offre une meilleure efficacité de stockage que JSON.
  • Utilisez les opérateurs appropriés. Familiarisez-vous avec les opérateurs JSON tels que `->`, `->>` et `#>>` pour extraire et manipuler des données. Par exemple, `->` extrait un objet JSON, tandis que `->>` extrait une valeur textuelle.
  • Indexer les colonnes JSONB. Créez des index sur les colonnes JSONB pour accélérer les opérations de recherche.
  • Validez vos données JSON. Assurez-vous que les données JSON sont valides avant de les insérer dans la base de données afin d'éviter les erreurs d'exécution.
  • Utilisez judicieusement les fonctions JSON. Bien que puissantes, les fonctions JSON peuvent être gourmandes en performances ; ne les utilisez qu'en cas de nécessité.
  • Quand choisir JSON plutôt que JSONB. Optez pour JSON lorsque le formatage original et l'ordre des clés sont importants pour votre cas d'utilisation.

Résumé des opérateurs JSON

Opérateur Description
`->` Extrait un objet JSON
`->>` Extrait une valeur textuelle de JSON
`#>>` Extraction d'une valeur textuelle à l'aide d'éléments de chemin d'accès