如何在 Postgresql 中使用 LIKE 和 ANY?
Posted
技术标签:
【中文标题】如何在 Postgresql 中使用 LIKE 和 ANY?【英文标题】:How to use LIKE with ANY in Postgresql? 【发布时间】:2014-12-15 19:00:54 【问题描述】:有没有办法对 postgres 中的字符串数组列进行部分字符串匹配?
我正在尝试以下语法,但它没有像我预期的那样工作:
SELECT * FROM example_table WHERE '%partial string' ILIKE ANY(array_column)
有正确的方法吗?
【问题讨论】:
【参考方案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'
【讨论】:
【参考方案2】:您需要分别搜索每个下标——这是一个可以解释为包含更多列的示例
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%'
如有必要,您可以修改“部分”以包含左/右括号和引号以更精确。
【讨论】:
【参考方案3】:刚刚使用array_to_string
实现了这个:
SELECT * FROM example_table WHERE array_to_string(array_column) ILIKE '%partial string'
【讨论】:
以上是关于如何在 Postgresql 中使用 LIKE 和 ANY?的主要内容,如果未能解决你的问题,请参考以下文章