Postgres - 如何将 select jsonb 键值对作为列?
Postgres - how select jsonb key value pairs as colums?
在 test
table 中有这样的记录(metrics
列是 jsonb 类型):
id name metrics
1 machine1 {"metric1": 50, "metric2": 100}
2 machine2 {"metric1": 31, "metric2": 46}
我想 select 将指标作为附加列,例如(伪代码):
Select *, json_each(test.metrics) from test;
得到如下结果:
id name metric1 metric2
1 machine1 50 100
2 machine2 31 46
这可能吗?
使用->>
运算符:
select id, name,
metrics ->> 'metric1' as metric1,
metrics ->> 'metric2' as metric2
from test;
您可以简单地使用 ->>
SELECT
id,
name,
metrics ->> 'metric1' as metric1,
metrics ->> 'metric2' as metric2
FROM t
请注意,现在 metric
列的类型为 text
。如果你想让它们成为 integer
类型,你需要另外转换它们:
(metrics ->> 'metric1')::int
在 test
table 中有这样的记录(metrics
列是 jsonb 类型):
id name metrics
1 machine1 {"metric1": 50, "metric2": 100}
2 machine2 {"metric1": 31, "metric2": 46}
我想 select 将指标作为附加列,例如(伪代码):
Select *, json_each(test.metrics) from test;
得到如下结果:
id name metric1 metric2
1 machine1 50 100
2 machine2 31 46
这可能吗?
使用->>
运算符:
select id, name,
metrics ->> 'metric1' as metric1,
metrics ->> 'metric2' as metric2
from test;
您可以简单地使用 ->>
SELECT
id,
name,
metrics ->> 'metric1' as metric1,
metrics ->> 'metric2' as metric2
FROM t
请注意,现在 metric
列的类型为 text
。如果你想让它们成为 integer
类型,你需要另外转换它们:
(metrics ->> 'metric1')::int