none
Campo do tipo texto para tipo numérico RRS feed

  • Pergunta

  • Boa tarde,

     

    Recebi um lote informações de um cliente, com aproximadamente 04 milhões de registros. Dentre as informações eu tenho uma coluna chamada renda, porém ela deveria estar como tipo de dados NUMÉRICO, mas está como TEXTO (VARCHAR).

    Como posso está passando para um tipo de dados numérico???

     

    Obs: Ja usei alguns cast e convert, mas sem sucesso.

     

    Obrigado.

     

    quinta-feira, 27 de outubro de 2011 14:22

Respostas

  • De matos,

     

    Como eu falei, RENDA não é numerico:

    select cast('fabrizzio' as int)

    Falha ao converter o varchar valor 'fabrizzio' para o tipo de dados int.

    Tente utilizar a função ISNUMERIC


    Fabrizzio A. Caputo
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com
    quinta-feira, 27 de outubro de 2011 15:04
    Moderador
  • Resumindo, existe conteúdo na coluna que não pode ser convertido para o tipo de dados especificado. Ou seja, há informação incompatível com o tipo 'numeric' que está sendo definido.

    Consequentemente, você terá que descobrir que dados são estes e efetuar a devida correção.

    A função recomendada pelo Fabrizzio (IsNumeric) é uma opção para lhe ajudar nesta verificação.


    Roberson Ferreira - Database Developer
    Acesse: www.robersonferreira.com.br
    Email: contato@robersonferreira.com.br

    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    sexta-feira, 28 de outubro de 2011 21:30
    Moderador

Todas as Respostas

  • De Matos, trabalho com cargas de grandes volumes de dados todos os dias e a minha dica é importar tudo como texto (o arquivo provavelmente é um txt correto?) e depois vc formata o campo renda para money (talvez seria o melhor formato para este tipo de campo).

    Se após importado, o campo renda for importado com ",", execute o seguinte comando:

    declare @renda varchar(50)

    set @renda = '1938,20'

    select convert(money,REPLACE(@renda,',','.'))

    Obs. Substitua a minha variável pelo nome do campo.

    Espero ter ajudado.

    Abs.

    quinta-feira, 27 de outubro de 2011 14:28
  • De matos,

     

    Teoricamente essa conversão simples, quando possivel claro, é feito automaticamente pelo SQL Server, qual o erro exato que voce esta tendo?

     

    Provavelmente existe algum dado alfa numerico, onde não existam apenas numeros.

    O que voce pode tentar é a utilização da função ISNUMERIC()


    Fabrizzio A. Caputo
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com
    quinta-feira, 27 de outubro de 2011 14:29
    Moderador
  • Esses arquivos ja foram importados, todos como varchar.

     

    Quando eu tento transformar o varchar em numeric ou int ele diz:

    Conversion failed when converting the varchar value 'RENDA' to data typeNUMERIC.

    quinta-feira, 27 de outubro de 2011 14:36
  • De matos,

     

    Como eu falei, RENDA não é numerico:

    select cast('fabrizzio' as int)

    Falha ao converter o varchar valor 'fabrizzio' para o tipo de dados int.

    Tente utilizar a função ISNUMERIC


    Fabrizzio A. Caputo
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com
    quinta-feira, 27 de outubro de 2011 15:04
    Moderador
  • Resumindo, existe conteúdo na coluna que não pode ser convertido para o tipo de dados especificado. Ou seja, há informação incompatível com o tipo 'numeric' que está sendo definido.

    Consequentemente, você terá que descobrir que dados são estes e efetuar a devida correção.

    A função recomendada pelo Fabrizzio (IsNumeric) é uma opção para lhe ajudar nesta verificação.


    Roberson Ferreira - Database Developer
    Acesse: www.robersonferreira.com.br
    Email: contato@robersonferreira.com.br

    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    sexta-feira, 28 de outubro de 2011 21:30
    Moderador