bidjan2 0 Denunciar post Postado Agosto 22, 2013 Boa noite. Tenho uma consulta no meu sistema que procura os clientes pelo seu nome. Eu utilizo um simples LIKE '%nome%' para procurar. Junto com esta funcionalidade, há um botão "Salvar cliente como novo" que é utilizado caso não encontre nenhum cliente com o nome informado. Em alguns momentos, os usuários do sistema procuram por clientes com nome errado. Erro de digitação. Falta H em alguns nomes, schneider e outros sobrenomes diferentes, alguns sobrenomes são abreviados, entre outros. Por exemplo: Usuário X digita Artur Silva no campo de pesquisa, porém o nome do cliente é artHur silva (com H). Como o sistema não lista nenhuma informação, então o usuário pressiona em "Salvar cliente como novo". Isso gera informações duplicadas para o mesmo cliente. Gostaria de saber se há algum LIKE dinâmico. Eu tentei usar o algoritimo levenshtein que ficou super lento... tentei usar match() against(), mas não funcionou para o caso do H. Alguém tem alguma ideia legal? Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Agosto 22, 2013 Tente soundex ... http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_soundex Mas nome é "fraco" para unicidade , o melhor é algo como cpf etc. Compartilhar este post Link para o post Compartilhar em outros sites
bidjan2 0 Denunciar post Postado Agosto 22, 2013 Oi Motta. Obrigado pela pronta resposta. Eu tentei usar o SONDEX agora. Para comparar o primeiro nome funciona bem, mas em nomes compostos é mais complicado. Estou tentando alguma expressão SQL mais complexa combinando o SOUNDEX. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Agosto 22, 2013 tente substr e soundex (1) separando o nome , o soundex tem a questão de ser feito para o inglês. (1) tipo separar o nome JOAO DA SILVA SOUZA JOAO SILVA SOUZA 3 SOUNDEX Compartilhar este post Link para o post Compartilhar em outros sites