言及されていない代替案の1つは、 citext
をインストールすることです。 拡張機能
これはPostgreSQL8.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);