繁体   English   中英

从sql表中的json中提取所有值

[英]Extract all values from json in sql table

我有一个postgresql表,其中有json格式的列。

样本列值:

{"Apple":{"category":"fruit","price":100},"Orange":{"category":"fruit","price":80}}

现在,我要选择此列,并提取每一行中所有项目的"price"

查询以获取列:

select items from my_table

要提取特定项目的json值,我可以使用

select items -> 'Orange' -> 'price' as price
from my_table

但是,如何提取所有商品(苹果,橙子)的价格? 作为一个数组。

使用json_each() ,例如:

with my_table(items) as (
    values (
    '{"Apple":{"category":"fruit","price":100},"Orange":{"category":"fruit","price":80}}'::json
    )
)

select key, (value->>'price')::numeric as price
from my_table,
json_each(items)

  key   | price 
--------+-------
 Apple  |   100
 Orange |    80
(2 rows)    
t=# with my_table(items) as (
  values('{"Apple":{"category":"fruit","price":100},"Orange":{"category":"fruit","price":80}}'::json)
)
select
  json_object_keys(items)
, items->json_object_keys(items)->>'price'
from my_table;
 json_object_keys | ?column?
------------------+----------
 Apple            | 100
 Orange           | 80
(2 rows)

json_object_keyshttps : json_object_keys

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM