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