Една неспомената алтернатива е да инсталирате citext
разширение
който идва с PostgreSQL 8.4+ и използва масив от citext
:
regress=# CREATE EXTENSION citext;
regress=# SELECT 'foo' = ANY( '{"Foo","bar","bAz"}'::citext[] );
?column?
----------
t
(1 row)
Ако искате да сте стриктно коректни по отношение на това и да избягвате разширенията, трябва да направите някои доста грозни подзаявки тъй като Pg няма много операции с богати масиви, по-специално няма операции за функционално картографиране. Нещо като:
SELECT array_agg(lower(($1)[n])) FROM generate_subscripts($1,1) n;
... където $1 е параметърът на масива. Във вашия случай мисля, че можете да мамите малко, защото не ви е грижа за запазването на реда на масива, така че можете да направите нещо като:
SELECT 'foo' IN (SELECT lower(x) FROM unnest('{"Foo","bar","bAz"}'::text[]) x);