如何使用hstore值获取Postgres中的行,以满足返回键的特定条件?

时间:2018-03-16 15:11:57

标签: sql postgresql hstore

我有hstore列。现在我想过滤满足hstore值的特定条件的行 - 不知道密钥。 E.g。

hstore column 'attributes': aspect1=3, aspect2=0, aspect3=1, aspect4=0

现在我想获取hstore值= 0的所有行。并列出键。

1 个答案:

答案 0 :(得分:0)

首先将hstore条目转换为CTE中的行:

with aspects as (select ..., (each("attributes")).*
    from mainTable),

each()函数为您提供了2列名为' key'和'价值'。 现在使用具有所需条件的CTE,连接到主表并将键收回作为数组:

select ..., array_agg(key) as fulfilled_aspects
    from aspects a join mainTable m on m.id = a.id
    where a.value = '0'

结果将是' fulfilled_aspects'数组列包含: ' aspect2,aspect4'

您还可以将后者用作CTE,以便将mainTable中的其他列添加到结果中。