MySQL: Conheça a função SOUNDEX()
A função SOUNDEX() retorna valores (strings) com a fonética similares. Lembrando que esta função pode não funcionar 100% para o nosso idioma.
Tabela: clientes
mysql> SELECT * FROM clientes; +----+----------------+--------------------+ | id | nome | e-mail | +----+----------------+--------------------+ | 1 | Marcos | email@teste.com.br | | 2 | Marco | email@teste.com.br | | 3 | Markus | email@teste.com.br | | 4 | Mark | email@teste.com.br | | 5 | Marc | email@teste.com.br | | 6 | Roberto Marcos | email@teste.com.br | | 7 | Pedro | email@teste.com.br | | 8 | Maicon | email@teste.com.br | +----+----------------+--------------------+ // buscando nomes com a pronúncia parecida mysql> SELECT * FROM clientes WHERE SOUNDEX(nome) = SOUNDEX('Marcos'); +----+--------+--------------------+ | id | nome | e-mail | +----+--------+--------------------+ | 1 | Marcos | email@teste.com.br | | 2 | Marco | email@teste.com.br | | 3 | Markus | email@teste.com.br | | 4 | Mark | email@teste.com.br | | 5 | Marc | email@teste.com.br | +----+--------+--------------------+ |
A função SOUNDEX(), também, pode gerar outras strings de forma arbitrária.
mysql> SELECT soundex('linhadecomando.com') as resultado; +-----------+ | resultado | +-----------+ | L5325325 | +-----------+ |
Uso o MySQL 5.1 com Tabelas em MyISAM e quando coloco o SOUNDEX o retorno é o seguinte
mysql> SELECT NomeFantasia FROM clientefornecedor WHERE SOUNDEX(NomeFantasia) = SOUNDEX(‘LUIZ’);
+————–+
| NomeFantasia |
+————–+
| LOGUS |
+————–+
1 row in set (0.02 sec)
Não sei pq não funciona aqui, outras pesquisas tbm retornaram resultados que não satisfazem a condição….. alguem sabe pq???
Fala Adilson,
Acredito que o problema esteja na busca fonética não estar 100% adaptada para o nosso idioma.
Existem algumas soluções na internet e compartilho um link bem explicativo: https://pt.stackoverflow.com/questions/167184/consulta-inteligente-com-mysql