none
Separar telefones fixo de celular RRS feed

  • Pergunta

  • Boa tarde, mas uma vez venho aqui pedir informacoes ao experts.

    Primeiramente obrigado por responder meus topicos.

    Bom, tenho uma tabela que chama-se clientes, nesta tabela existe o campo TELEFONE, neste campo TELEFONE, existe numero de fixo e celular, gostaria de saber como posso separar o mesmo, pensei em uma logica que.

    SE começa 8,9 celular senao Fixo....

    alguem poderia me ajudar em um select ?

     

    segunda-feira, 31 de janeiro de 2011 16:52

Respostas

  • Olá,

    É, dependendo da quantidade de registros isso vai ficar bem lento! Mas não tem jeito, se você precisa, tem q fazer!

    Mas sim, vc teria que usar um SUBSTRING para pegar o primeiro caracter do valor, e comparar com as regras normais (8,9 celular, demais fixo, etc..).

     


    SELECT
     CASE LEFT('8111-0000', 1)
     WHEN 3 THEN 'Fixo'
     WHEN 8 THEN 'Celular'
     WHEN 9 THEN 'Celular'
     END AS FixoOuCelular;

     

    Um abraço,

    Raul Santos Neto


    http://raulsantosneto.wordpress.com
    segunda-feira, 31 de janeiro de 2011 17:02
  • segue um exemplo..

    update b
    set b.A7_CELULA = A1_TEL
    from SA1010 a inner join MA7010 b on a.PK=b.pk --(informar o[s] campos que se relaciona[m])
    where 
    CASE LEFT(A1_TEL, 1)
     WHEN 8 THEN 'Celular'
     WHEN 9 THEN 'Celular'
     ELSE 'Fixo'
    END ='Celular'
    

    att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    • Marcado como Resposta Maasilva segunda-feira, 31 de janeiro de 2011 18:05
    segunda-feira, 31 de janeiro de 2011 17:47
    Moderador

Todas as Respostas

  • Olá,

    É, dependendo da quantidade de registros isso vai ficar bem lento! Mas não tem jeito, se você precisa, tem q fazer!

    Mas sim, vc teria que usar um SUBSTRING para pegar o primeiro caracter do valor, e comparar com as regras normais (8,9 celular, demais fixo, etc..).

     


    SELECT
     CASE LEFT('8111-0000', 1)
     WHEN 3 THEN 'Fixo'
     WHEN 8 THEN 'Celular'
     WHEN 9 THEN 'Celular'
     END AS FixoOuCelular;

     

    Um abraço,

    Raul Santos Neto


    http://raulsantosneto.wordpress.com
    segunda-feira, 31 de janeiro de 2011 17:02
  • Bom , com estes comando passados, resolvi meu problema. Agora , vou para a 2ª parte.

    Usei o script :

    SELECT A1_NOME, A1_DTNASC,A1_TEL, A1_TEL =
     CASE LEFT(A1_TEL, 1)
     WHEN 8 THEN 'Celular'
     WHEN 9 THEN 'Celular'
     ELSE 'Fixo'
     END
    FROM SA1010

    Agora quero fazer um update de tudo que for celular para a tabela MA7010 campo A7_CELULA, respeitando os devidos celulares de seu devido cliente

    Me ajudem por favor.. obrigado

     

     

     

    • Editado Maasilva segunda-feira, 31 de janeiro de 2011 17:40 falta informacao
    segunda-feira, 31 de janeiro de 2011 17:39
  • segue um exemplo..

    update b
    set b.A7_CELULA = A1_TEL
    from SA1010 a inner join MA7010 b on a.PK=b.pk --(informar o[s] campos que se relaciona[m])
    where 
    CASE LEFT(A1_TEL, 1)
     WHEN 8 THEN 'Celular'
     WHEN 9 THEN 'Celular'
     ELSE 'Fixo'
    END ='Celular'
    

    att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    • Marcado como Resposta Maasilva segunda-feira, 31 de janeiro de 2011 18:05
    segunda-feira, 31 de janeiro de 2011 17:47
    Moderador