通过密钥访问jsonb值[]

时间:2020-08-29 18:05:24

标签: postgresql jsonb

我目前正在以以下格式将数据存储在postgres db的jsonb列中: {"ids": [4, 3, 2, 1]},其中值是整数数组。

我希望执行以下操作:

  1. 在该列中包含值4的行中找到行
    'ids'键的数组。

  2. 在“ ids”键的值数组中找到该列包含值2、3和1的行。

我最近的尝试使用以下

select * from tablename WHERE (column_name -> ids)::integer[] && ARRAY[1,3]

哪个在:: integer [] ERROR: cannot cast type jsonb to integer[]

给了我一个类型转换错误

我怀疑我正在尝试转换“ ids”部分,需要更深入地研究,但是我不确定如何(如果那是正确的方法)。

2 个答案:

答案 0 :(得分:1)

使用包含运算符// package.json { ... "dependencies": { "gatsby-plugin-theme-ui": "^0.4.0-rc.1", "@theme-ui/prism": "^0.4.0-rc.1", "theme-ui": "^0.4.0-rc.1", } }

@>

这也适用于多个值:

select * 
from tablename 
WHERE column_name @> '{"ids":[4]}'

Online example

答案 1 :(得分:0)

SELECT * from tablename WHERE column_name -> 'ids' @> '[4]'::jsonb
SELECT * from tablename WHERE column_name -> 'ids' @> '[2,3,1]'::jsonb