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