使用通配符/ Like从postgres中的数组中选择

时间:2016-02-12 05:25:01

标签: arrays postgresql unnest

所以我有一个Postgres数据库,其中一列是一个字符串数组

如果我进行查询

SELECT count(*) FROM table WHERE column @> ARRAY['string']::varchar[];

我得到了一组特定的数据,但是如果我想在字符串上用通配符查询该数组,我似乎无法弄明白,就像

SELECT count(*) FROM table WHERE column LIKE ARRAY['%string%']::varchar[];

感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

使用unnest()

WITH t(arr) AS ( VALUES
  (ARRAY['foo','bar']),
  (ARRAY['foo1','bar1'])
)
SELECT count(*) FROM t,unnest(t.arr) AS str
WHERE str ILIKE '%foo%';

结果:

 count 
-------
     2
(1 row)

答案 1 :(得分:0)

您可以将ANY() construct~~LIKE operator)结合使用:

SELECT count(*) FROM table
WHERE column ~~ ANY(ARRAY['%string%']::varchar[]);