我想{TEST@EXAMPLE.COM}
匹配{test@example.com, other@example.com}
执行区分大小写的查询就足够了:
select * from users where email @> '{test@example.com}'
但是,我找不到对数组列运行不区分大小写的包含查询的方法。
这个页面没有灌输信心,这是可能的,因为没有提到区分大小写。有什么想法吗?
我想{TEST@EXAMPLE.COM}
匹配{test@example.com, other@example.com}
执行区分大小写的查询就足够了:
select * from users where email @> '{test@example.com}'
但是,我找不到对数组列运行不区分大小写的包含查询的方法。
这个页面没有灌输信心,这是可能的,因为没有提到区分大小写。有什么想法吗?
一个可行的解决方案,但对于较大的表和数组来说会非常慢,是取消嵌套数组并使用 ILIKE (或任何其他不区分大小写的比较):
select *
from (
select id, unnest(email) email_address
from user
) t
where email_address ILIKE 'test@example.com'
我认为你不能直接这样做,因为 postgresql 数组没有不区分大小写的函数。最简单的方法是将数组数据和查询都保留为小写。
这是类似的问题:在 Postgres 字符串数组上创建不区分大小写的索引