none
Como converter o varchar '1234.567-' para o float -1234.567 RRS feed

  • Pergunta

  • Olá, senhores. Bom dia.

    Preciso importar arquivos CSV cujos valores numéricos negativos estão representados com o sinal ao final da seqüência: não é -10 ... o dito trás 10-

    Como uso o convert ou cast ou outra função para pegar o valor correto.

    P.S.: já estou usando o CASE...WHEN mas isso fica muito complicado em expressões que preciso gerar e interpretar.

    Agradecido.


    Bom dia, bom trabalho.

    quarta-feira, 22 de fevereiro de 2012 12:11

Respostas

  • Ricardo, bom dia,

    Segue o código:

    declare @var varchar(255), @varTrat float
    
    set @var = '123.4958-'
    
    select @varTrat= 
    		case when CHARINDEX('-',@var,1) >0 then cast(REPLACE(@var,'-','') as float)*-1 else 0 end
    
    print @varTrat


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp


    quarta-feira, 22 de fevereiro de 2012 13:13

Todas as Respostas

  • Ricardo, bom dia,

    Segue o código:

    declare @var varchar(255), @varTrat float
    
    set @var = '123.4958-'
    
    select @varTrat= 
    		case when CHARINDEX('-',@var,1) >0 then cast(REPLACE(@var,'-','') as float)*-1 else 0 end
    
    print @varTrat


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp


    quarta-feira, 22 de fevereiro de 2012 13:13
  • Olá, Eduardo. Muito agradecido por sua atenção.

    Eu já havia construído algo com CASE. O problema é que preciso repetir tal teste em mais de um lugar na mesma expressão e isto fica longo e confuso. Porém, o uso do CharIndex() foi um aperfeiçoamento.

    Muito obrigado.


    Bom dia, bom trabalho.

    quarta-feira, 22 de fevereiro de 2012 15:05
  • Olá Ricardo,

    Que tal fazer o seguinte:

    declare @var varchar(20)
    set @var = '123.4958-'
    select 
    	convert(float,substring(@var,0,LEN(@var)-1))*-1

    retiramos o sinal negativo do final com o substring e multiplicamos por -1 para negativar o resultado.

    abraço!

    se útil, classifique.


    Dhiego Piroto - MCT | MCTS SQL Server 2008 Developer | Email: dhiegopiroto@gmail.com

    • Sugerido como Resposta DhiegoPiroto quinta-feira, 23 de fevereiro de 2012 12:02
    quinta-feira, 23 de fevereiro de 2012 12:02