我有hstore列。现在我想过滤满足hstore值的特定条件的行 - 不知道密钥。 E.g。
hstore column 'attributes': aspect1=3, aspect2=0, aspect3=1, aspect4=0
现在我想获取hstore值= 0的所有行。并列出键。
答案 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中的其他列添加到结果中。