sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL skiftlägesokänslig SELECT på array

Ett alternativ som inte nämns är att installera citext förlängning som kommer med PostgreSQL 8.4+ och använder en array av citext :

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

Om du vill vara strikt korrekt om detta och undvika tillägg måste du göra några ganska fula subqueries eftersom Pg inte har många rich array-operationer, i synnerhet inga funktionella mappningsoperationer. Något i stil med:

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

... där $1 är arrayparametern. I ditt fall tror jag att du kan fuska lite eftersom du inte bryr dig om att bevara arrayens ordning, så du kan göra något som:

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


  1. dplyr left_join med mindre än, större än condition

  2. Använda SSHTunnelForwarder för att ansluta till en MySQL-db via SSH

  3. INFOGA ... PÅ DUPLIKATNYCKELUPPDATERING med VAR?

  4. Kan jag få SQL Server att anropa en lagrad proc var n:e sekund?