sql - 如何从 PostgreSQL 中的 jsonb 获取特定对象?
问题描述
我有一个名为“测试”的表,其中包含两个字段“qnId”和“答案”。'qnId' 存储一个 uuid,'Answers' 是一个 jsonb 数组,大致如下所示:
[{ "user" : "1", "ans" : "some text" }, { "user" : "3", "ans": "some text"}]
如何使用 value 检索 of"ans"
的"user"
值3
。如何使用普通 SQL 查询检索值
解决方案
尝试这样的事情:
select
x ->> 'ans' as user_3_ans
from
jsonb_array_elements('[{ "user" : "1", "ans" : "some text 1" }, { "user" : "3", "ans": "some text 3"}]'::jsonb) as x
where
x ->> 'user' = '3'
相同,但来自表:
with
table1 as (
select
1 as id,
'[{ "user" : "1", "ans" : "some text 1" }, { "user" : "3", "ans": "some text 3"}]'::jsonb as answers
)
select
id,
answers,
el ->> 'ans' as user_3_ans
from
( select
id,
answers,
jsonb_array_elements(answers) as el
from
table1) as x
where
el ->> 'user' = '3'
推荐阅读
- c++ - 在 NDK 中启用链接时间优化时出现链接器错误
- r - 为什么函数 `GenSA` 不遵守组件的下限?
- javascript - 使用 lodash 根据类型对多个对象进行分组
- python-3.x - NetworkX 有向图 - 基于权重值的颜色节点
- database - Azure 规模集上虚拟机上的数据库
- openedx - 如何离线安装 Open edX(没有互联网)
- javascript - 如何使图像贴在所有设备高度的部分底部
- c++ - 从向量集中修剪非公共元素
- vue.js - 更改 v-list 标题的背景颜色
- node.js - 无法访问其他文件夹而不是 node.js 应用程序