问题描述
我目前正在以以下格式将数据存储在postgres db的jsonb列中:
{"ids": [4,3,2,1]}
,其中值是整数数组。
我希望执行以下操作:
-
在该列中包含值4的行中找到行
'ids'键的数组。 -
在“ ids”键的值数组中找到该列包含值2、3和1的行。
我最近的尝试使用以下
select * from tablename WHERE (column_name -> ids)::integer[] && ARRAY[1,3]
哪个在:: integer [] ERROR: cannot cast type jsonb to integer[]
我怀疑我正在尝试转换“ ids”部分,需要更深入地研究,但是我不确定如何(如果那是正确的方法)。
解决方法
使用包含运算符// 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]}'
,
SELECT * from tablename WHERE column_name -> 'ids' @> '[4]'::jsonb
SELECT * from tablename WHERE column_name -> 'ids' @> '[2,3,1]'::jsonb