我想将{TEST@EXAMPLE.COM}
与{test@example.com, other@example.com}
执行区分大小写的查询就足够了:
select * from users where email @> '{test@example.com}'
但是,我找不到一种方法来对数组列运行不区分大小写的包含查询。
This page并没有灌输这种可能性的信心,因为没有提到区分大小写。有什么想法吗?
答案 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