PostgreSQL如何从列表内的JSON数据按键提取值以返回指定查询结果
问题解答
可以实现你需要的查询效果,以下是适配PostgreSQL数据库(匹配你原写法的::json类型转换语法)的正确方案:
正确SQL语句
SELECT id, (status::json -> 0) ->> 'A' AS A, (status::json -> 0) ->> 'B' AS B FROM test;
逻辑说明
- 首先将text类型的
status字段强转为JSON类型:status::json - 用
-> 0提取JSON数组的第一个元素(数组下标从0开始计数),返回JSON对象格式 - 用
->> '键名'提取JSON对象对应键的字符串值,若数组为空、对应键不存在,都会自动返回null,完全匹配你需要的id=1的返回结果
原语句错误原因
@>是JSON包含判断操作符,仅返回true/false布尔值,无法用来提取字段值- 用双引号包裹
"A"不符合SQL规范,双引号会被识别为数据库对象标识符(如表名、列名),普通字符串需要用单引号包裹 - 仅写了一个返回逻辑,没有分别生成A、B两个结果列
内容的提问来源于stack exchange,提问作者Scott Boston
相关产品推荐
相关产品推荐

