【发布时间】:2019-02-21 13:59:53
【问题描述】:
如何将 jsonb 列值与 ID 等顶级值连接起来 例如
CREATE TABLE things (
id SERIAL PRIMARY,
data jsonb
);
如果我运行以下查询:SELECT * FROM things;,我会得到这个
id | data
-----------
1 | {"key": "value}
我怎样才能加入得到这种格式的东西:
id | key
-----------
1 | value
我可以做 SELECT AS 但是,然后我必须手动选择所有键,如果其中一个值为空,它仍然返回为空值
id | key
-----------
1 | null
如何在忽略空值的同时选择上述所有 jsonb 数据?
【问题讨论】:
-
"我必须手动选择所有键" - 在 SQL 中,数据库必须知道结果列的数量和名称(和类型) 在执行语句之前(这是在解析语句时完成的)。您不能拥有取决于执行查询时评估的值的动态列数(并且您不能在每行中拥有不同数量的列,这是您对该数据模型隐含的期望)。不过,您可以轻松地将所有键(具有非空值)作为行获取。
标签: sql postgresql