根据JSON格式中的值选择...

4
假设我有一个数据库表,其中包含一些常见的列,例如姓名、性别、年龄等……
此外,我还有一个使用 JSON 数据类型(从 Postgres 9.2 开始可用)的额外列,JSON 的长度和字段是任意的:
{"occupation":"football"}

{"occupation":"football", "hair-colour":"black"}

{"hair-style":"curly"}

使用Postgres 9.3的新功能,我想要返回所有occupation = football的行。类似于这个伪代码:select * from table where json_field.occupation = football。有没有办法实现这个功能?

1
如何在PostgreSQL的JSON数据类型中查询字段? - nif
1
我已经看过了。我打算避免在问题的UPDATE I中提到的自定义函数。而且答案中的结构似乎与我的不同。 - Filip
在重复的问题中,回答者使用了json_to_elements函数从数组中创建多行。因此,结构与您的相同,每行包含一个JSON对象。并且没有使用自定义函数。解决方案与您接受的完全相同。 - nif
1个回答

8

如果我理解手册正确,你可以使用 ->->> 操作符访问JSON字段。查询的格式如下:

SELECT *
FROM your_table
WHERE json_field ->> 'occupation' = 'football';

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接