如何在Postgresql中使用LIKE和ANY一起使用?

时间:2014-12-15 19:00:55

标签: sql postgresql postgresql-9.2

有没有办法在postgres中对字符串数组列进行部分字符串匹配?

我正在尝试以下语法,但它无法正常工作:

SELECT * FROM example_table WHERE '%partial string' ILIKE ANY(array_column)

有没有正确的方法呢?

2 个答案:

答案 0 :(得分:1)

drop table if exists temp_a;
create temp table temp_a as
(
    select array['alpha','beta'] as strings
    union all
    select array['gamma','theta']
);

select * 
from (select unnest(strings) as string from temp_a) as sq 
where string ilike '%eta'

答案 1 :(得分:0)

你需要单独搜索每个下标 - 这里有一个例子,可以用来包含更多列

SELECT distinct array_column FROM
   (SELECT array_column,
           generate_subscripts(array_column, 1) AS s
      FROM example_table) AS foo
 WHERE array_column[s] like '%partial string';

替代黑客:

select * from example_table where array_column::text like '%partial%'

如果有必要,你可以破解"部分"包括开/关括号和引号只是更精确一些。