mysqlutf-8diacritics

How to remove accents in MySQL?


I've just compiled a database of 1 million place names. I'm going to use it in an auto-complete widget to look up cities. A lot of these places have accents... I want to be able to find records when a user types the name without an accent.

In order to do this, I've got a 2nd column with an unaccented copy of the name. Many of these records are still blank, so I want to write a query to fill them in. Is this possible in straight MySQL? If so, how?


Solution

  • If you set an appropriate collation for the column then the value within the field will compare equal to its unaccented equivalent naturally.

    mysql> SET NAMES 'utf8' COLLATE 'utf8_unicode_ci';
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> SELECT 'é' = 'e';
    +------------+
    | 'é' = 'e' |
    +------------+
    |          1 |
    +------------+
    1 row in set (0.05 sec)