2016-11-16 65 views
0

匹配逗號分隔標記列值我有一個數組:{"test1",test2,test3}Postgres的:用預先定義的陣列

id tags 
1 test4 
2 test2 
3 test3,test2 
4 test1,test2 
5 test1,test2,test3 
6 test2,test1,test2 

我的條件相匹配,如果所有的標記都存在在數組中。如果是,那麼選擇所有這些記錄。

所以這裏對於上述情況的結果應該是

2,3,4,5,6 

回答

2

使用包含數組操作:

select id 
from the_table 
where string_to_array(tags, ',') <@ array['test1', 'test2', 'test3']; 

在線例如:http://rextester.com/IJT95673

+0

你有反轉操作:<@ , not @> –

+0

@a_horse_with_no_name如果陣列y是:{「test1」,「test2」} –

+0

注意數組元素本身的空間 –

1
SELECT id FROM t 
WHERE ANY(regexp_split_to_array(tags, ','))=ANY ({"test1","test2","test3"})