不区分大小写的数组包含Postgres中的查询

时间:2013-09-29 02:31:37

标签: postgresql

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

相匹配

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

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

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

This page并没有灌输这种可能性的信心,因为没有提到区分大小写。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

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

select *
from (
   select id, unnest(email) email_address
   from user
) t
where email_address ILIKE 'test@example.com'

答案 1 :(得分:2)

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

以下是类似的问题:Creating case-insensitive indexes on Postgres string array