2016-06-21 4 views
1

Meine Frage ist spezifisch für Rails + postgres Hstore Datentyp.Rails Postgres Hstore: Abfrage nach einem bestimmten Schlüssel mit einem der angegebenen Werte

Die WHERE IN [1,2, 3] oder die Schienen entspricht Model.where(data: [1,2,3]) funktioniert für normale Spalten, aber nicht für hstore.

Ich habe eine Hstore-Spalte (sagen wir info) und ich möchte Zeilen abfragen, die einen bestimmten Schlüssel und einen der angegebenen Werte haben.

Zum Beispiel: alle Bücher zu finden, die einen Schlüssel als ‚Autor‘ und Wert als ‚ABC‘ in hstore Spalte, die folgende Abfrage funktioniert haben:

Book.where("info @> hstore(:key, :value)", key: "author", value: "ABC")

Aber ich brauche eine Abfrage, gibt Datensätze zurück, die einen Schlüssel als 'Autor' und einen der Werte in ['ABC', 'XYZ', 'PQRS', 'DFG'] haben.

Irgendwelche Vorschläge?

Antwort

0

Vielleicht versuchen:

Book.where("(info -> :key) IN (:values)", key: 'author', values: ['ABC', 'XYZ']) 

jedoch @> Index Unterstützung hat, während diese keine Indizes verwenden.

+0

Danke. Das hat funktioniert, aber ohne Index-Unterstützung wie du gesagt hast. – ranjan

Verwandte Themen