Sql Postgres-如何选择jsonb键值对作为列?

Sql Postgres-如何选择jsonb键值对作为列?,sql,postgresql,postgres-10,Sql,Postgresql,Postgres 10,在test表中有这样的记录(metrics列为jsonb类型): 我想选择指标作为附加列,例如(伪代码): 要获得如下结果: id name metric1 metric2 1 machine1 50 100 2 machine2 31 46 这可能吗?使用->操作符: select id, name, metrics ->> 'metric1' as metric1, metrics -

test
表中有这样的记录(
metrics
列为jsonb类型):

我想选择指标作为附加列,例如(伪代码):

要获得如下结果:

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 test;

您只需使用
->

请注意,现在
度量
列的类型为
text
。如果要将它们设置为
整数类型
,则需要另外强制转换它们:

(metrics ->> 'metric1')::int

您只需使用
->

请注意,现在
度量
列的类型为
text
。如果要将它们设置为
整数类型
,则需要另外强制转换它们:

(metrics ->> 'metric1')::int

好的,很好,谢谢。但我有50个指标,希望在Java客户机中动态映射它们。所以我更喜欢通过通配符或其他方式来选择它们。那可能吗?@米尔卡马尔:不,那不可能。但是为什么不简单地将JSON发送到Java应用程序并在那里进行处理呢?是的,我没有想到。ObjectMapper应该做到这一点。谢谢:)好的,很好,谢谢。但我有50个指标,希望在Java客户机中动态映射它们。所以我更喜欢通过通配符或其他方式来选择它们。那可能吗?@米尔卡马尔:不,那不可能。但是为什么不简单地将JSON发送到Java应用程序并在那里进行处理呢?是的,我没有想到。ObjectMapper应该做到这一点。谢谢:)好的,很好,谢谢。但我有50个指标,希望在Java客户机中动态映射它们。所以我更喜欢通过通配符或其他方式来选择它们。这可能吗?这不可能。输出列必须是预定义的。因此,如果需要,您需要在后端处理JSON。好的,很好,谢谢。但我有50个指标,希望在Java客户机中动态映射它们。所以我更喜欢通过通配符或其他方式来选择它们。这可能吗?这不可能。输出列必须是预定义的。因此,如果需要,您需要在后端处理JSON。
(metrics ->> 'metric1')::int