带有LIKE语句的PostgreSQL hstore列

时间:2017-05-24 09:48:43

标签: sql postgresql hstore

我有一个测试数据库,其中我有一个表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类型执行此操作?

1 个答案:

答案 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))