如下字段:
id,name,category,其中 category 类型是 jsonb
假如有如下 3 行数据:
想要的结果是:
where category=11 的时候返回 1001 这一行数据
where category=33 的时候返回 1001 和 1003 两行数据
1
javapythongo Oct 11, 2019
可以的
|
2
imherer OP |
3
reus Oct 11, 2019
where category && array[11]
|
4
randm Oct 11, 2019
数据都没有 KEY 键,很难定位
https://www.postgresql.org/docs/12/functions-json.html |
5
reus Oct 11, 2019
看错了,json 要用 @>
select category @> '11'::jsonb |
9
optional Oct 11, 2019 category @> '22'::jsonb 这样。
如果是字符串数组就更简单 category ? '22' |
10
imherer OP |
12
randm Oct 11, 2019 补上,有字段名,那应该可以的
WHERE category @> '[11]'::jsonb |
13
imherer OP @optional 我尝试把字段改成字符串数组后,报语法错误呢 operator does not exist: character varying[] ? unknown
改了之后的源数据是这样的 1001, name1, {11, 22, 33} |
16
encro Jan 2, 2020
category 可以用 array[int]类型,然后加 Gist 索引
|