web-dev-qa-db-ja.com

フィルタ文字列の一部に一致するhstoreタグキーをクエリする方法

PostgreSQLクエリで、%building%のようなキーでタグ付けされたレコードを使用して結果をフィルタリングするにはどうすればよいですか。

何かのようなもの:

..
where 
    Table.tags ? '%building%'

Postgresqlのドキュメント内に回答が見つかりませんでした( https://www.postgresql.org/docs/9.6/static/hstore.html

1
Sami Snunu

Likeを使用してキーを比較できるようにするには、キーのセットを作成する必要があります。

何かのようなもの:

select *
from the_table t
where exists (select * 
              from skeys(t.tags) as x(tagname)
              where x.tagname like '%building%');

しかし、これは速くはなりません。