Postgres:匹配逗号分隔标签列值与预定义数组

时间:2016-11-16 10:02:26

标签: postgresql

我有一个数组:{"test1",test2,test3}

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 个答案:

答案 0 :(得分:2)

对数组使用contains运算符:

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

在线示例:http://rextester.com/IJT95673

答案 1 :(得分:1)

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