PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

SELECT w tablicy PostgreSQL nie uwzględnia wielkości liter

Jedną z niewymienionych alternatyw jest zainstalowanie citext rozszerzenie który jest dostarczany z PostgreSQL 8.4+ i używa tablicy citext :

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

Jeśli chcesz mieć rację i unikać rozszerzeń, musisz wykonać kilka dość brzydkie podzapytania ponieważ Pg nie ma wielu bogatych operacji tablicowych, w szczególności nie ma operacji mapowania funkcjonalnego. Coś takiego:

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

... gdzie $1 jest parametrem tablicy. W twoim przypadku myślę, że możesz trochę oszukiwać, ponieważ nie zależy ci na zachowaniu kolejności tablicy, więc możesz zrobić coś takiego:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Znajdź nazwę tabeli, do której się odwołuje, za pomocą nazwy tabeli, pola i schematu

  2. Zapytanie według współrzędnych trwa zbyt długo - opcje do optymalizacji?

  3. jak wykonać skrypt pgsql w pgAdmin?

  4. Pobieraj posty od nieblokujących użytkowników

  5. Heroku - zrzucaj i ładuj pojedynczą tabelę do współdzielonej bazy danych postgres