PostgreSQL 中数组与 JSON 组合的查询问题, ANY() 与 ? 的方位冲突

2017-08-18 17:11:20 +08:00
 iugo

thetable 表中有一个名为 jsonb_array 的字段, 类型是 jsonb[].

该字段有以下数据:

[{"a": 1}]
[{"a": 2}]
[{"b": 1}]
[{"b": 2}]

我想要把

[{"b": 1}]
[{"b": 2}]

取出来, 使用 SELECT * FROM thetable WHERE ANY (jsonb_array) ? 'b'; 报错.

因为 ANY() 要求必须写在 operator 的右边. 可是 jsonb 的 ? 操作符不像 @> / <@ 一样有可以互换方向的, ? 要求筛选的内容必须写在其左边. 这可如何是好?

2501 次点击
所在节点    问与答
1 条回复
iugo
2017-08-18 18:08:53 +08:00
没有人回答更好的办法...

看了官方文档, 建议使用 `generate_subscripts()` 完成.

https://www.postgresql.org/docs/9.6/static/arrays.html

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/383997

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX