none
Valores Repetidos RRS feed

  • 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?

    quarta-feira, 27 de julho de 2016 11:16

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
    ----------------------------------------------------------



    quarta-feira, 27 de julho de 2016 11:37

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
    ----------------------------------------------------------



    quarta-feira, 27 de julho de 2016 11:37
  • 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 

     
    quarta-feira, 27 de julho de 2016 15:39
  • 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 

    quarta-feira, 27 de julho de 2016 17:15