如何解决JSON 数据库表查询
我有一些对象的 JSON 表,我正在尝试查询对象中的金额值
{
"authorizations": [
{
"id": "d50","type": "passed","amount": 100,"fortId": 5050,"status": "GENERATED","voided": false,"cardNumber": 3973,"expireDate": null,"description": "Success","customerCode": "858585","paymentMethod": "cash","changeDatetime": null,"createDatetime": 000000000,"reservationCode": "202020DD","authorizationCode": "D8787"
},{
"id": "d50","authorizationCode": "D8787"
}
],}
我尝试了以下四个选项,但没有一个给我对象的值:
SELECT info @> 'authorizations:[{amount}]'
FROM idv.reservations;
SELECT info -> 'authorizations:[{amount}]'
FROM idv.reservations;
info -> ''authorizations' ->> 'amount'
FROM idv.reservations
select (json_array_elements(info->'authorizations')->'amount')::int from idv.reservations
注意我正在使用 DBeaver
解决方法
如果您希望“authorizations”JSON 数组中包含每个对象的一行,以及相应的数量,您可以使用横向连接和jsonb_array_elements()
:
select r.*,(x.obj ->> 'amount')::int as amount
from reservations r
cross join lateral jsonb_array_elements(r.info -> 'authorizations') x(obj)
我们也可以一次提取所有数量并将它们放入一个数组中,如下所示:
select r.*,jsonb_path_query_array(r.info,'$.authorizations[*].amount') as amounts
from reservations r
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。