none
Converte nvarchar(4000) para numeric(18,2) sql server ou ssis RRS feed

  • Pergunta

  • Olá Pessoal! Bom Dia.

    recebi uma base de dados de um cliente onde as colunas de numeros estão como varchar 4000 e seguem o seguinte formato:

    coluna Minutos : 

    4.7999999999999998
    1.1000000000000001
    0.5
    5.4000000000000004
    0.69999999999999996

    coluna Valor R$:
    -5

    -2
    -10
    -30

    100
    5653

    quando tento converte exemplo convert(numeric(18,2) , valor) as Valor o resultado muitas vezes vem 300,00 ou 5653,00, sempre adicionando mais zeros que o necessario, quando coloco para float os valores não vem certos.

    tentei usar o ssis, porem ainda não acertei na conversão.


    Ednilton Santos


    • Editado Ednilton Santos segunda-feira, 26 de dezembro de 2016 13:08 correção do titulo
    segunda-feira, 26 de dezembro de 2016 13:07

Respostas

Todas as Respostas

  • Deleted
    • Marcado como Resposta Ednilton Santos terça-feira, 27 de dezembro de 2016 11:26
    segunda-feira, 26 de dezembro de 2016 13:53
  • O la á

    tente assim

    SELECT convert(numeric(18,0) , @numero1) as Valor

    veja os exemplos
    DECLARE @numero1 VARCHAR(4000) ='-5';
    DECLARE @numero2 VARCHAR(4000) ='-2';
    DECLARE @numero3 VARCHAR(4000) ='-10';
    DECLARE @numero4 VARCHAR(4000) ='-30';
    DECLARE @numero5 VARCHAR(4000) ='100';
    DECLARE @numero6 VARCHAR(4000) ='5653';
    
    --------------------------------------
    SELECT convert(numeric(18,2) , @numero1)
    SELECT convert(numeric(18,2) , @numero2)
    SELECT convert(numeric(18,2) , @numero3)
    SELECT convert(numeric(18,2) , @numero4)
    SELECT convert(numeric(18,2) , @numero5)
    SELECT convert(numeric(18,2) , @numero6)
    
    
    
    ---------------------------------------
    SELECT convert(numeric(18,0) , @numero1)
    SELECT convert(numeric(18,0) , @numero2)
    SELECT convert(numeric(18,0) , @numero3)
    SELECT convert(numeric(18,0) , @numero4)
    SELECT convert(numeric(18,0) , @numero5)
    SELECT convert(numeric(18,0) , @numero6)



    Wesley Neves


    • Editado Wesley Neves segunda-feira, 26 de dezembro de 2016 13:56 correçao
    segunda-feira, 26 de dezembro de 2016 13:56
  • Ola, Diz!! 

    Converter os minutos deu certo! só o valor que não.

    ao aplicar o código que você me passou é exibido esta mensagem (Conversion failed when converting the nvarchar value '37.899999999999999' to data type int.)

    eu não sei te dizer qual o maior valor por que é uma tabela que contem muitos dados, como faço para saber que estou errado é sempre somando tudo e comparando com o valor que mostra na ferramenta de BI

    sobre a pergunta:  Um valor de 0 a 59 ou um valor de 0 a 99? 0,59 e 18,9 foram os valores que já identificados no momento


    Ednilton Santos

    segunda-feira, 26 de dezembro de 2016 14:53
  • Olá Wesley, quando faço este converte ele adiciona zeros ou 9 no valor

    Ednilton Santos

    segunda-feira, 26 de dezembro de 2016 15:08
  • Deleted
    segunda-feira, 26 de dezembro de 2016 16:28
  • com float funcionou, mas tem três meses que o valor não bate, meio que deu uma duplicada nos valores, quando olho na ferramenta do bi, mostra que ta tudo certo. estranho né!

    Ednilton Santos

    segunda-feira, 26 de dezembro de 2016 17:45
  • Deleted
    segunda-feira, 26 de dezembro de 2016 19:45