在Postgres的integer[]
列中是否有其他方法可以搜索特定值?
我当前安装的Postgres版本不允许以下声明:
SELECT * FROM table WHERE values *= 10;
数组示例:
'{11043,10859,10860,10710,10860,10877,10895,11251}'
'{11311,10698,10697,10710,10712,10711,10708}'
该语句应该返回数组包含'10710'
的每一行。
答案 0 :(得分:30)
答案 1 :(得分:1)
快速搜索会如此,但你应该使用index gist或gin for intarray type Postgres intarray
SELECT * FROM table WHERE values @> ARRAY[10];
答案 2 :(得分:-1)
**Store Integer Array as Strings in Postgresql and Query the Array**
Finally I could save the integer as string array in one column able to successfully convert into array and query the array using below example.
CREATE TABLE test
(
year character varying,
id serial NOT NULL,
category_id character varying,
CONSTRAINT test_pkey PRIMARY KEY (id)
)
Data
"2005";1;"1,2,3,4"
"2006";2;"2,3,5,6"
"2006";3;"4,3,5,6"
"2007";7;"1,2"
select distinct(id) from test, (select id as cid, unnest(string_to_array(category_id , ',')::integer[]) as cat from test) c where c.cid=test.id and cat in (1,2,3);
Result:
2
1
3
7