4

我想{TEST@EXAMPLE.COM}匹配{test@example.com, other@example.com}

执行区分大小写的查询就足够了:

select * from users where email @> '{test@example.com}'

但是,我找不到对数组列运行不区分大小写的包含查询的方法。

这个页面没有灌输信心,这是可能的,因为没有提到区分大小写。有什么想法吗?

4

2 回答 2

4

一个可行的解决方案,但对于较大的表和数组来说会非常慢,是取消嵌套数组并使用 ILIKE (或任何其他不区分大小写的比较):

select *
from (
   select id, unnest(email) email_address
   from user
) t
where email_address ILIKE 'test@example.com'
于 2013-09-29T08:09:15.730 回答
2

我认为你不能直接这样做,因为 postgresql 数组没有不区分大小写的函数。最简单的方法是将数组数据和查询都保留为小写。

这是类似的问题:在 Postgres 字符串数组上创建不区分大小写的索引

于 2013-09-29T07:37:29.623 回答