V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
iugo
V2EX  ›  问与答

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

  •  
  •   iugo · 2017-08-18 17:11:20 +08:00 · 2458 次点击
    这是一个创建于 2463 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 的 ? 操作符不像 @> / <@ 一样有可以互换方向的, ? 要求筛选的内容必须写在其左边. 这可如何是好?

    1 条回复    2017-08-18 18:08:53 +08:00
    iugo
        1
    iugo  
    OP
       2017-08-18 18:08:53 +08:00
    没有人回答更好的办法...

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

    https://www.postgresql.org/docs/9.6/static/arrays.html
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3389 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 12:40 · PVG 20:40 · LAX 05:40 · JFK 08:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.