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

Najděte možné duplikáty ve dvou sloupcích bez ohledu na velká a malá písmena a speciální znaky

lower() / upper()

Pomocí jednoho z nich můžete skládat znaky na malá nebo velká písmena. Speciální znaky nejsou ovlivněny:

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

unaccent()

Pokud skutečně chcete ignorovat diakritická znaménka, jak naznačují vaše komentáře, nainstalujte si doplňkový modul bez přízvuku , který poskytuje slovník pro vyhledávání textu, který odstraňuje diakritiku a také obecnou funkci unaccent() :

CREATE EXTENSION unaccent;

Je to velmi jednoduché:

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

Výsledek:

busercafe

To neodstraní nepísmena. Přidejte regexp_replace() jako se o tom zmínil @Craig:

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

Výsledek:

softbusercafe

Na to můžete dokonce vytvořit funkční index:



  1. ERROR 1005 MySQL Workbench Dopředné inženýrství

  2. co jsou materializované názory v orákulu?

  3. Převeďte místní datum a čas (s časovým pásmem) na unixové časové razítko v Oracle

  4. Změňte pořadí řádků záznamů databáze prostřednictvím front-endu pomocí php