Usuário com melhor resposta
Valores Repetidos

Pergunta
-
No meu cadastro de entidade preciso identificar os valores repetidos.
Ex:
Nome Telefone
João 31-35443099
Matheus 99887639
Pedro +553135443099
Repare que o telefone do João e do Pedro são o mesmo porem um tem 031 e o outro +5531. Como que faço para identificar esses valores?
Respostas
-
Nao é simples fazer isso.
O campo telefone é uma string (varchar) entao voce teria que usar expressoes regex (complexas) para fazer a busca parcial, ou criar uma regra para normalizar o numero de telefone... Pode ficar pior ainda, exemplo:
31-3544-3099
(31) 3544 3099
+55 (31) 3544 3099
Dependendo como a pessoa faz a entrada dos dados, fica quase impossivel uma comparaçao direta.
Como eu faria: Retirar todos os +55 (caso todos os telefones sejam nacionais, entao nao ha necessidade do codigo ddi), remover espaços, hifens, parenteses.... resumindo deixar somente digitos.
Eu vi que ha casos onde a pessoa nao entrou com o codigo regional, nesses casos deveria ser adicionado o codigo local...
Eu creio que esse problema seja mais do lado da interface que do banco.
Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Sugerido como Resposta Robson William Silva quarta-feira, 27 de julho de 2016 12:17
- Editado William John Adam Trindade quarta-feira, 27 de julho de 2016 13:03
- Marcado como Resposta Robson William Silva quarta-feira, 27 de julho de 2016 17:06
Todas as Respostas
-
Nao é simples fazer isso.
O campo telefone é uma string (varchar) entao voce teria que usar expressoes regex (complexas) para fazer a busca parcial, ou criar uma regra para normalizar o numero de telefone... Pode ficar pior ainda, exemplo:
31-3544-3099
(31) 3544 3099
+55 (31) 3544 3099
Dependendo como a pessoa faz a entrada dos dados, fica quase impossivel uma comparaçao direta.
Como eu faria: Retirar todos os +55 (caso todos os telefones sejam nacionais, entao nao ha necessidade do codigo ddi), remover espaços, hifens, parenteses.... resumindo deixar somente digitos.
Eu vi que ha casos onde a pessoa nao entrou com o codigo regional, nesses casos deveria ser adicionado o codigo local...
Eu creio que esse problema seja mais do lado da interface que do banco.
Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Sugerido como Resposta Robson William Silva quarta-feira, 27 de julho de 2016 12:17
- Editado William John Adam Trindade quarta-feira, 27 de julho de 2016 13:03
- Marcado como Resposta Robson William Silva quarta-feira, 27 de julho de 2016 17:06
-
Cara a maneira certa de resolver o problema é alterar sua tabela para não receber qualquer tipo de dado, porém para resolver rapidamente em uma query você pode usar o comando right para visualizar os 8 últimos números, que por logica, trata-se do número que você quer diferenciar.
select right(Telefone,8) from <sua tabela>
com isso você pode começar a brincadeira do tipo
select distinct right(Telefone,8) from <sua tabela> -- para selecionar apenas os resultados distintos
- Sugerido como Resposta Anderson O. Santos quarta-feira, 27 de julho de 2016 17:14
-
Não vai resolver o problema se alguns telefones estiverem com mascara de formatação, pense nisto e retire toda a formatação antes de gravar em seu banco de dados
Se a resposta contribuiu com seu aprendizado por favor marque como Útil
Se solucionou seu problema por favor marque como Resposta
Atenção, se seu problema foi resolvido não deixe o post aberto
Visite : www.codigoexpresso.com.br