2016-02-12 52 views
2

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

如果我做了查询

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

我得到一组特定的阵列数据备份,但如果我想查询与字符串通配符数组我似乎无法找出答案,像

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

任何帮助表示赞赏!

回答

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) 
0

可以使用ANY() construct,连同~~(在LIKE operator):

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