sql >> Database teknologi >  >> RDS >> PostgreSQL

PostgreSQL ufølsom SELECT på array

Et alternativ, der ikke er nævnt, er at installere citext udvidelse der kommer med PostgreSQL 8.4+ og brug en række citext :

regress=# CREATE EXTENSION citext;
regress=# SELECT 'foo' = ANY( '{"Foo","bar","bAz"}'::citext[] );
 ?column? 
----------
 t
(1 row)

Hvis du vil være strengt korrekt omkring dette og undgå udvidelser, skal du lave nogle temmelig grimme underforespørgsler fordi Pg ikke har mange rich array operationer, især ingen funktionelle mapping operationer. Noget som:

SELECT array_agg(lower(($1)[n])) FROM generate_subscripts($1,1) n;

... hvor $1 er array-parameteren. I dit tilfælde tror jeg, du kan snyde lidt, fordi du er ligeglad med at bevare arrayets rækkefølge, så du kan gøre noget som:

SELECT 'foo' IN (SELECT lower(x) FROM unnest('{"Foo","bar","bAz"}'::text[]) x);


  1. Hvordan FROM_BASE64() virker i MariaDB

  2. Sådan installeres (L|M)AMP-stack på iPhone?

  3. hvordan man udskriver Statement (CallableStatement) i Java?

  4. Sådan installeres MariaDB-databasen i Debian 10