none
Converter varchar para float/int RRS feed

  • Pergunta

  • Bom dia, estou com um problema aqui!

    Tenho que importar dados de um csv, até aí tranquilo, aí tem uma coluna chamada Maintenance, que vem da seguinte forma: R$ 123,34, por exemplo.

    Eu preciso converter isso para float pra fazer umas consultas aqui, aí estou fazendo o seguinte:

    select replace(replace(maintenance, 'R$ ', ''), ',','.'),
    convert(float, replace(replace(maintenance, 'R$ ', ''), ',','.')) 
    from gestao_frota

    1º: estou estou fazendo um replace para tirar o R$

    2º: estou substituindo a vírgula por ponto

    e depois tento fazer a conversão, mas aparece a seguinte mensagem:

    Msg 8114, Level 16, State 5, Line 2
    Error converting data type varchar to float.

    Alguém aí pode me ajudar? É meio urgente isso!

    Obrigado,

    Guilherme



    quinta-feira, 19 de dezembro de 2013 13:47

Respostas

  • Bom dia,

    Se o valor possui o ponto para separar as milhares acredito que também será necessário executar um Replace para remover esses pontos antes de trocar a vírgula por ponto.

    E talvez seja necessário utilizar as funções LTrim e RTrim para remover espaços em branco.

    Espero que ajude.


    Assinatura: http://www.imoveisemexposicao.com.br


    • Editado gapimex quinta-feira, 19 de dezembro de 2013 14:03
    • Marcado como Resposta Guilherme Brunhole quinta-feira, 19 de dezembro de 2013 15:38
    quinta-feira, 19 de dezembro de 2013 14:03

Todas as Respostas

  • Bom dia,

    Se o valor possui o ponto para separar as milhares acredito que também será necessário executar um Replace para remover esses pontos antes de trocar a vírgula por ponto.

    E talvez seja necessário utilizar as funções LTrim e RTrim para remover espaços em branco.

    Espero que ajude.


    Assinatura: http://www.imoveisemexposicao.com.br


    • Editado gapimex quinta-feira, 19 de dezembro de 2013 14:03
    • Marcado como Resposta Guilherme Brunhole quinta-feira, 19 de dezembro de 2013 15:38
    quinta-feira, 19 de dezembro de 2013 14:03
  • Guilherme, como o Gapimex disse, acredito que tenha algum ponto para separar milhar, tente fazer como o exemplo abaixo:

    create table #teste (maintenance varchar(100))
    
    insert into #teste
    values ('R$ 123,34'),(('R$ 1.123,34'))
    
    select 
     convert(float, replace(replace(replace(maintenance,'.',''), 'R$ ', ''), ',','.')) 
     from #teste


    Alexandre Matayosi Conde Mauricio.

    quinta-feira, 19 de dezembro de 2013 14:17
  • Obrigado Gapimex, deu certo aqui :D
    quinta-feira, 19 de dezembro de 2013 15:38
  • Valeu Alexandre, com a sua ajuda e a do Gapimex eu consegui aqui!
    quinta-feira, 19 de dezembro de 2013 15:39
  • Valeu !, solução inteligente ! obrigado
    terça-feira, 10 de novembro de 2020 17:18