sql >> Databáze >  >> RDS >> PostgreSQL

PostgreSQL přízvuk + vyhledávání bez rozlišení velkých a malých písmen

Pokud potřebujete "kombinovat s rozlišováním malých a velkých písmen", existuje řada možností v závislosti na vašich přesných požadavcích.

Možná nejjednodušší je, aby se v indexu výrazu nerozlišovala malá a velká písmena.

Na základě funkce f_unaccent() uvedeno v odkazované odpovědi:

  • Podporuje PostgreSQL kolace „necitlivá na akcent“?
CREATE INDEX users_lower_unaccent_name_idx ON users(lower(f_unaccent(name)));

Potom:

SELECT *
FROM   users
WHERE  lower(f_unaccent(name)) = lower(f_unaccent('João'));

Nebo můžete vytvořit lower() do funkce f_unaccent() , odvodit něco jako f_lower_unaccent() .

Nebo (zejména v případě, že přesto potřebujete provést fuzzy porovnávání vzorů) můžete použít index trigramů, který poskytuje doplňkový modul pg_trgm staví na výše uvedené funkci, která také podporuje ILIKE . Podrobnosti:

  • LOWER LIKE vs. ILIKE

K odkazované odpovědi jsem přidal poznámku.

Nebo můžete použít doplňkový modul citext :

  • Odložitelné jedinečné omezení nerozlišující malá a velká písmena


  1. Vytvoření modelu Entity Framework zahrnuje více databází

  2. Nejjednodušší způsob, jak přidat více mezer do řetězce v MySQL – SPACE()

  3. Jak mohu použít aktuální datum v dotazu HQL s databází Oracle?

  4. Světový den zálohování:4 zajímavá fakta o ztrátě dat, která byste měli vědět