4

{TEST@EXAMPLE.COM}と合わせたい{test@example.com, other@example.com}

大文字と小文字を区別するクエリを実行するだけで十分です。

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

ただし、大文字と小文字を区別しない contains クエリを配列列に対して実行する方法が見つかりません。

このページでは、大文字と小文字の区別について言及されていないため、これが可能であるという確信を植え付けるものではありません。何かご意見は?

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配列には大文字と小文字を区別しない関数がないため、直接行うことはできないと思います。最も簡単な方法は、配列データとクエリの両方を小文字にすることです。

同様の問題があります: Postgre 文字列配列で大文字と小文字を区別しないインデックスを作成する

于 2013-09-29T07:37:29.623 に答える