在Postgres中搜索整数数组

jus*_*ssi 17 sql arrays postgresql

有没有其他方法可以integer[]在Postgres 的列中搜索某个值?

我目前安装的Postgres版本并没有让下面的语句:

SELECT * FROM table WHERE values *= 10;
Run Code Online (Sandbox Code Playgroud)

数组示例:

'{11043,10859,10860,10710,10860,10877,10895,11251}'
'{11311,10698,10697,10710,10712,10711,10708}'
Run Code Online (Sandbox Code Playgroud)

该语句应返回数组包含的每一行'10710'.

Erw*_*ter 34

对于平等检查,您可以简单地:

SELECT * FROM table WHERE 10 = ANY (values);
Run Code Online (Sandbox Code Playgroud)

阅读手册中的ANY/SOME.


any*_*asa 7

快速搜索就会如此,但是您应该使用索引 gist 或 gin 作为 intarray 类型Postgres intarray

 SELECT * FROM table WHERE values @> ARRAY[10];
Run Code Online (Sandbox Code Playgroud)