Éléments de requête dans le tableau JSON dans PostgreSQL
Présentation
SQL peut gérer efficacement le stockage des données JSON. Cet article se concentrera sur la façon d'interroger les tableaux stockés dans les objets JSON dans PostgreSQL.
Requête d'un tableau imbriqué JSON
Supposons qu'une colonne JSON nommée "data" contienne un tableau d'objets. La tâche consiste à récupérer tous les enregistrements correspondant à une valeur "src" spécifique du tableau "objects".
Requête utilisant la jointure latérale et la dissociation
Postgres fournit la fonction json_array_elements() pour développer les tableaux JSON. En le combinant avec la jointure latérale vous pouvez obtenir le résultat souhaité :
<code class="language-sql">SELECT * FROM reports r, json_array_elements(r.data->'objects') obj WHERE obj->>'src' = 'foo.png';</code>
Cette requête crée une jointure latérale pour chaque élément du tableau JSON, permettant à la colonne obj de représenter chaque objet du tableau.
Alternatives à PostgreSQL 9.4
Pour PostgreSQL 9.4 et versions ultérieures, vous pouvez profiter d'un traitement JSON amélioré :
<code class="language-sql">SELECT * FROM reports WHERE data->'objects' @> '[{"src":"foo.png"}]';</code>
Dans cette requête, l'opérateur "@>" vérifie si le tableau contient l'objet spécifié. N'oubliez pas de mettre les termes de recherche entre crochets pour qu'ils correspondent à la structure du tableau JSON.
Résumé
Pour interroger un tableau dans un type JSON, vous pouvez utiliser json_array_elements() pour développer le tableau et effectuer une jointure latérale. Pour PostgreSQL 9.4 et versions ultérieures, vous pouvez utiliser l'opérateur "@>" amélioré ainsi que les index GIN correspondants pour une correspondance efficace. Les deux méthodes vous permettent de récupérer des enregistrements spécifiques en fonction des valeurs des éléments du tableau.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!