我正在尝试在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%'?
答案 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%');