我有一张表Customer
- 客户编号(整数)
- 客户姓名(字符串)
- 客户订单(jsonB)
customerOrders
具有以下结构:
{
"nodeValue":[
{
"key": "key1",
"value": "value1"
},
{
"key": "key2",
"value": "value2"
},
{
"key": "key3",
"value": "value3"
},
{
"key": "key4",
"value": "value4"
},
{
"key": "key5",
"value": "value5"
}
]
}
我正在尝试获取 key = 'key3' AND key = 'key4'
行的 nodeValue
的值。
例如:返回 'key3' 和 'key4' 的值,WHERE key = 'key3' AND key = 'key4'
。
我正在尝试做类似的事情:
SELECT value, value
from public.customers
where nodeValue.key3 = 'key3'
AND nodeValue.key4 = 'key4'
最佳答案
with orders as
(
select jsonb_array_elements(customerOrders->'nodeValue') as orders
from customers
)
select orders->'value' as val
from orders
where
orders->>'key' = 'key3'
or orders->>'key' = 'key4';
结果:
值1
值2
请注意使用运算符 ->> 获取文本值
关于sql - 从 jsonb 列获取特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60025903/