PostgreSQL json 类型查询

数据表中有个字段 options 类型为 json.
这个字段中存储的数据如下:

[{
        "option_title" : "A选项",
        "score" : "1",
        "creation_date" : "2016-02-25T17:25:55+08:00"
    }, {
        "option_title" : "B选项",
        "score" : "0",
        "creation_date" : "2016-02-25T17:25:55+08:00"
    }, {
        "option_title" : "C选项",
        "score" : "0",
        "creation_date" : "2016-02-25T17:25:55+08:00"
    }, {
        "option_title" : "D选项",
        "score" : "0",
        "creation_date" : "2016-02-25T17:25:55+08:00"
    }
]

请问:怎么查询 option_title = "A选项" 的。
PostgreSQL 版本: 9.5

postgresql
数据库
数据表
2022-09-06 13:22:04
浏览
收藏 0
回答 2
待解决
回答 2
按赞同
/
按时间
先来一碗蛋炒饭
2

好吧,自己昨天已经找到一个解决办法了。现在贴出来。

/* 先转换 options 这个 json 字段,然后再按一般查 json 的方法查询即可。 */
select * from (
    select id, title, json_array_elements(options) as data from question
) t
where data->>'option_title'::varchar = 'A选项';
分享
微博
QQ
微信
回复1
2022-09-06 15:03:51
pgdba

​JSON 函数和操作符​

​json​​​ ​​->​​​ ​​text​​​ → ​​json​

​jsonb​​ ​​->​​ ​​text​​ → ​​jsonb​

用给定的键提取JSON对象字段。

​'{"a": {"b":"foo"}}'::json -> 'a'​​ → ​​{"b":"foo"}​

分享
微博
QQ
微信
回复
2023-05-27 11:49:21
相关问题
Map类型怎么转换成Json string
193浏览 • 1回复 待解决
PostgreSQL WHERE 计数条件
1318浏览 • 2回复 待解决
如何部署PolarDB for PostgreSQL
2094浏览 • 1回复 待解决
postgresql 如何插入含 ‘ 数据?
2143浏览 • 2回复 待解决
关于SQL查询两个表查询
1426浏览 • 1回复 待解决
postgresql 如何合并.bak内数据?
1228浏览 • 1回复 待解决
PostgreSQL insert 前判断是否存在?
2120浏览 • 2回复 待解决
postgresql 大量数据的统计问题?
775浏览 • 2回复 待解决
mysql数据类型使用int类型和string类型
865浏览 • 1回复 待解决