lower()
/ upper()
Usa uno di questi per piegare i caratteri in minuscolo o maiuscolo. I caratteri speciali non sono interessati:
SELECT count(*), lower(name), number
FROM tbl
GROUP BY lower(name), number
HAVING count(*) > 1;
unaccent()
Se in realtà vuoi ignorare i segni diacritici, come suggeriscono i tuoi commenti, installa il modulo aggiuntivo unaccent
, che fornisce un dizionario di ricerca di testo che rimuove gli accenti e anche la funzione generica unaccent()
:
CREATE EXTENSION unaccent;
Lo rende molto semplice:
SELECT lower(unaccent('Büßercafé'));
Risultato:
busercafe
Questo non rimuove le non lettere. Aggiungi regexp_replace()
come @Craig menzionato per questo:
SELECT lower(unaccent(regexp_replace('$s^o&f!t Büßercafé', '\W', '', 'g') ));
Risultato:
softbusercafe
Puoi anche creare un indice funzionale su questo: