首页 > 解决方案 > 将 jsonb 列与 Postgres 中的顶级列连接

问题描述

例如,如何将 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 数据?

标签: sqlpostgresql

解决方案


使用->>运算符

select id, data->>'key' as key from things;

编辑

问题是我必须选择每个键,如果键为空,它仍然显示,我不能只选择...

where使用子句中的另一个条件过滤它

select id, data->>'key' as key from things where nullif(data->>'key','')
is not null;

演示


推荐阅读