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

4
我希望将{TEST@EXAMPLE.COM}{test@example.com, other@example.com}进行匹配。
对于区分大小写的查询,每个都足够了: select * from users where email @> '{test@example.com}' 然而,我找不到一种方法来运行一个不区分大小写的包含查询来针对数组列。 这个页面没有提到区分大小写,这让人不太自信。有什么想法吗?
3个回答

4

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

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

非常适用于按标签分页帖子,使用内部选择的LIMIT和OFFSET,查询执行时间很短甚至没有 :) - Euler Ribeiro Sudbrack

2

0

您可以使用LOWER/UPPER函数。

select * from users where LOWER("email"::text)::text[] @> '{test@example.com}'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接