我有一个测试数据库,其中我有一个表example
,其列attributes
类型为hstore
:
第1行:weight=>'115', height=>'165'
第2行:problem=>'weight'
因此, weight 可以是键或值。
我想要select语句,当我说like %weight%
时,我会得到所有包含重量的记录。 Row1和row2,无论是键还是值。它应该是这样的:
SELECT *
FROM example
WHERE attributes like %weight%
如何使用hstore类型执行此操作?
答案 0 :(得分:3)
执行此操作的一种方法是使用or
条件:
SELECT *
FROM example
WHERE attributes ? 'weight' -- contains the key
or 'weight' = any (avals(atributes)) -- is 'weight' contained in any value
另一种选择可能是使用hstore_to_array()
函数将hstore转换为包含值和键的数组:
SELECT *
FROM example
WHERE 'weight' = any (hstore_to_array(attributes))