如何在Postgresql数组中搜索'%stars%'?

时间:2018-02-07 16:40:49

标签: ruby-on-rails postgresql

我正在尝试在Postgresql查询中找到一条记录,其中我有一个列'alternate_names'

t.text     "alternate_names",          default: [],                 array: true

而且,我想找到以下记录:

altenate_names = ['All Stars']

我的标准是'星'

换句话说,我该怎么写下面的

select * from group where '%Stars%' = ANY(alternate_names);

但这不会返回我上面的记录,因为它有数组['All Stars'] ...那么,我怎样才能用数组执行ILIKE'%stars%'?

2 个答案:

答案 0 :(得分:1)

如果你想要LIKE运算符:

select * from group where alternate_names::text like '%Stars%';

比较数组的文本表示与模式无效,但模式之前的通配符在text[]的任何查询中都无效

答案 1 :(得分:0)

您可以使用unnest检查数组中所有元素的部分匹配。 例如:

select * from group where exists (select 1 from unnest(alternate_names) as a_names where a_names like '%Stars%');