我将JSON存储在一个jsonb列中:
[
{
"ORDER_TYPE": "foo",
"PAYMENT_TYPE": "VISA",
}
]
我可以很好地进行查询,但是是否可以从结果集中选择json的特定部分(PAYMENT_TYPE)?
SELECT PAYMENT_TYPE
FROM tools.orders
WHERE responsejsonb::jsonb @> '[{"ORDER_TYPE":"foo"}]';
所需的输出“付款类型”:“签证”或“VISA”
2条答案
按热度按时间afdcj2ne1#
首先平整JSONB阵列。
编辑
然而,如果
responsejsonb
数组只有一个元素(或者只有第一个元素重要),那么它就更简单了,你需要的表达式是responsejsonb::jsonb->0->>'PAYMENT_TYPE'
。o2gm4chl2#
您可以使用JSON路径表达式:
如果需要所有付款类型,请使用
jsonb_path_query_array()
。Online example
如果
responsejsonb
真的是用jsonb
类型定义的,则向jsonb的强制转换是无用的。