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

Find mulige dubletter i to kolonner og ignorer store og små bogstaver og specialtegn

lower() / upper()

Brug en af ​​disse til at folde tegn til enten små eller store bogstaver. Specialtegn påvirkes ikke:

SELECT count(*), lower(name), number
FROM   tbl
GROUP  BY lower(name), number
HAVING count(*) > 1;

unaccent()

Hvis du rent faktisk ønsker at ignorere diakritiske tegn, som dine kommentarer antyder, skal du installere det ekstra modul kode>uaccent , som giver en tekstsøgningsordbog, der fjerner accenter og også den generelle funktion unaccent() :

CREATE EXTENSION unaccent;

Gør det meget enkelt:

SELECT lower(unaccent('Büßercafé'));

Resultat:

busercafe

Dette fjerner ikke ikke-bogstaver. Tilføj regexp_replace() ligesom @Craig nævnte for det:

SELECT lower(unaccent(regexp_replace('$s^o&f!t Büßercafé', '\W', '', 'g') ));

Resultat:

softbusercafe

Du kan endda bygge et funktionelt indeks oven i det:



  1. Internaler i de syv SQL Server-sorteringer – Del 1

  2. Laravel slutter sig til og vælg mellem flere borde

  3. bruge PHP til at oprette en HTML-tabel ud fra en MSQL-forespørgsel uden duplikerede rækker?

  4. Hvordan kan jeg aktivere MySQLi-udvidelsen i PHP 7?