按键访问jsonb值[]



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

我想做以下事情:

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

  2. 定位列中包含值2,3和&"ids"键的值数组中的1。

我最近一次尝试使用以下

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

这在:integer[]ERROR: cannot cast type jsonb to integer[]处给了我一个类型转换错误

我怀疑我试图抛出"id"部分,需要更深入一层,但我不确定如何(如果这是正确的方法(。

使用包含运算符@>

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

这也适用于多个值:

select * 
from tablename 
WHERE column_name @> '{"ids":[1,2,3]}'

在线示例

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

最新更新