How to make a LIKE ignoring accent?

9

I need to make inquiries in a database of registered users. However, I need this search done by the user name, through LIKE , and this should ignore the UTF-8 encoding present in the names.

What I want to say is this:

  • When you search for c , it should find c and ç .
  • When I search for a , I want it to find à , ã and á

That is,

When doing

SELECT * FROM usuarios where NOME LIKE 'Maria Magalhaes'

He found Maria Magalhães

How can I do this in MYSQL?

    
asked by anonymous 14.08.2015 / 15:04

3 answers

6

Dude, I've been through this and solved the problem by just adding collate utf8_general_ci after like '%string%' , like this:

Select * from TABELA where CAMPO like '%texto_para_encontrar%' collate utf8_general_ci

I did not need to make any changes to the DB charset or the page.

    
29.12.2015 / 23:17
4

I solved the problem defined tables as utf8_unicode_ci

We convert the type of character input from the table

ALTER TABLE 'tabela' DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Then we convert the data that already exists to the same encoding used in Query above.

ALTER TABLE 'tabela'
CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
    
14.08.2015 / 16:36
0

Credits go to the SQLFROMHELL website link

--Quando os textos precisam ser idênticos em nível de minúsculas/maiúsculas, podemos utilizar os COLLATEs com CS:
SELECT
CASE WHEN 'Produção' = 'Produção' COLLATE SQL_Latin1_General_CP1_CS_AS
THEN 1
ELSE 0 END

--Para ignorar a diferença entre as letras maiúsculas e minúsculas, utilizamos COLLATEs com CI:
SELECT
CASE WHEN 'Produção' = 'produção' COLLATE SQL_Latin1_General_CP1_CI_AS
THEN 1
ELSE 0 END

--Quando precisamos ignorar acentos, COLLATES com AI (insensibilidade a acentos):
SELECT
CASE WHEN 'Produção' = 'produçao' COLLATE SQL_Latin1_General_CP1_CI_AI
THEN 1
ELSE 0 END

--Quando precisamos ignorar a diferença até do ç e c, recomendo a utilização de COLLATEs com CI e AI do sistema operacional, exemplo:
SELECT
CASE WHEN 'Produção' = 'producao' COLLATE Latin1_General_CI_AI
THEN 1
ELSE 0 END
    
07.01.2019 / 20:08