Comment interroger des valeurs avec des caractères génériques dans PostgreSQL hstore
Je suis en train de requête hstore pour toutes les valeurs de certaines clés qui correspondent à vos critères de recherche.
Je peux obtenir toutes les valeurs pour une certaine touche comme ceci:
SELECT DISTINCT
svals(slice(data, ARRAY['Supplier']))
FROM "products"
Je peux également obtenir une valeur spécifique:
SELECT DISTINCT
svals(slice(data, ARRAY['Supplier'])) AS sup
FROM "products"
WHERE data @> 'Supplier => Toshiba'
Ce que j'aime vraiment, c'est quelque chose comme cela ne fonctionne pas):
SELECT DISTINCT
svals(slice(data, ARRAY['Supplier'])) AS sup
FROM "products"
WHERE data @> 'Supplier => %tosh%'
ou:
SELECT DISTINCT
svals(slice(data, ARRAY['Supplier'])) AS sup
FROM "products"
WHERE lower(sup)
LIKE '%tosh%'
pour la casse de la recherche. Comment est-ce fait?
source d'informationauteur Rob Gonzalez
Vous devez vous connecter pour publier un commentaire.
Vous pouvez extraire des valeurs de clé à partir d'un
hstore
colonne avec le->
de l'opérateur.En outre, comme la plupart des expressions dans PostgreSQL (à l'exception des choses comme
random()
), vous pouvez l'indice de cette valeur:Cela permettrait de PostgreSQL pour répondre à de nombreuses requêtes à l'aide de l'index au lieu d'aller chercher de chaque ligne et de la numérisation de la
hstore
colonne. Voir les notes sur Types D'Index concernant l'utilisation des index avec COMME.Une mise en garde à willglynn réponse à quelqu'un de voir cela dans l'avenir-la requête initiale et la nouvelle requête ont un comportement légèrement différent. À savoir,
comprendra une valeur NULL en supposant au moins une ligne n'a pas une mission pour le Fournisseur.
ne renvoie la valeur NULL.