
如下字段: 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 索引 |