none
Campo convertido zerado RRS feed

  • Pergunta

  • Alguém poderia me ajudar

    Tentei converte um campo, para a execução de uma multiplicação mas, meu campo ficou zerado

    SELECT MATERIAL, UM_REGISTER, QUANTITY_UM_REGISTER_KG, (QUANTITY_UM_REGISTER_KG*0.001) 
    FROM (SELECT MATERIAL, UM_REGISTER , 
    CASE ISNUMERIC (QUANTITY_UM_REGISTER) WHEN 0 THEN CONVERT (NUMERIC (18,2), QUANTITY_UM_REGISTER)
    ELSE 0.00  END AS QUANTITY_UM_REGISTER_KG
    FROM MB_51_PG
    WHERE UM_REGISTER = 'TO') AS TESTE
    GO

    Valeu!



    • Editado TF_KS quinta-feira, 11 de julho de 2019 14:40
    quinta-feira, 11 de julho de 2019 14:38

Respostas

Todas as Respostas

  • Bom dia,

    Experimente fazer uns testes fazendo a conversão do valor quando o retorno da função IsNumeric for igual a 1:

    CASE ISNUMERIC(QUANTITY_UM_REGISTER) 
        WHEN 1 THEN CONVERT(NUMERIC(18, 2), QUANTITY_UM_REGISTER)
        ELSE 0.00
    END AS QUANTITY_UM_REGISTER_KG
    

    Espero que ajude


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

    quinta-feira, 11 de julho de 2019 15:03
  • TF_KS,

    Quando você se refere a zerado, esta querendo dizer que o SQL Server esta retornando NULL ou simplesmente retorna esta coluna "vazia".

    Algumas perguntas para nos orientar:

    1 - Qual é o tipo de dados utilizada na coluna Quantity_UM_Register?

    2 - Gostaria de saber o porque você esta utilizando a função IsNumeric? Por acaso neste mesma coluna podemos ter dados caracteres?

    3 - Já tentou utilizar a função IsNull ou Coalesce para verificar se o valor que esta sendo retornado é Nulo?

    Uma observação:

    Dependendo do tipo de dados que a coluna Quantity_Um_Register utilizar a função Convert() não vai conseguir realizar a conversão explícita, sendo assim, os dados que serão retornados podem ser desconsiderados na apresentação por parte do SQL Server.

    Verifique se o uso do Numeric(18,2) é o melhor tipo de dados a ser retornado.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]


    quinta-feira, 11 de julho de 2019 15:05
  • Deleted
    quinta-feira, 11 de julho de 2019 15:25
  • O campo que estou tentendo converter é VARCHAR, usei ISNUMERIC porque achei mais fácil...

    mas, qualquer sugestão é bem vinda..

    Uma outra alternativa para converter meu campo VARCHAR para numérico?

    um outro ponto, meu campo possui valores negativos, não sei se isso faz diferença...

    Valeu!!



    • Editado TF_KS quinta-feira, 11 de julho de 2019 16:21
    quinta-feira, 11 de julho de 2019 16:18
  • Infelizmente, não funcionou mesmo assim..

    teria uma outra sugestão para que eu possa converter esse campo que é VARCHAR em numérico?

    e meu campo VARCHAR possui valores negativos...
    • Editado TF_KS quinta-feira, 11 de julho de 2019 16:22
    quinta-feira, 11 de julho de 2019 16:20
  • TF_KS,

    Então, converter de forma direta vai justamente depender do dado que esta contido no campo.

    Veja se este exemplo te ajuda:

    -- Convertendo diretamente para Money --
    SELECT '1,'+$0
    Union
    SELECT '10,'+$0
    Union
    SELECT '100,'+$0
    Union
    SELECT '1000,'+$0
    Go
    
    -- Convertendo para Numeric --
    Declare @ValorVarchar Varchar(5)
    
    Set @ValorVarchar = '10.00'
    
    Select Convert(Numeric(18,2),@ValorVarchar)
    Go

    **Observação para converter diretamente para Numeric(), neste caso o separador de casas decimais é um elemento importante.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]


    quinta-feira, 11 de julho de 2019 16:41
  • Deleted
    quinta-feira, 11 de julho de 2019 16:46
  • Uma parte dos dados

    -4.000
    -4.000
    296
    -80
    -2
    -60
    -120
    -60
    -80
    -80
    -25
    301
    -160
    300
    139
    -54
    12,14
    12,14
    -12,14
    -12.140,00
    -30.460,00
    22,42
    -22,42
    -33.940,00
    22,42
    -26.020,00
    -68
    68
    68
    32,22
    -32.220,00
    -32,22
    32,22
    -26.940,00
    26,94
    -26,94
    26,94
    55,56
    -55,56
    55,56
    -37.500,00
    -26.800,00
    -31.260,00
    40
    -40
    40
    -40
    40
    40
    -40
    -40
    -40
    40
    40
    65,24
    -28.780,00
    -28.780,00
    28.780,00
    -36.460,00
    -36.460,00
    36.460,00
    -65,24
    65,24
    -34.900,00
    34,9
    -34,9
    34,9
    17,06
    -17,06
    -24.880,00
    17,06
    35,32

    quinta-feira, 11 de julho de 2019 16:51
  • Deleted
    • Marcado como Resposta TF_KS quinta-feira, 11 de julho de 2019 17:01
    quinta-feira, 11 de julho de 2019 16:58
  • FUNCIONOU!!!

    Valeu demais!!!! 

    quinta-feira, 11 de julho de 2019 17:02
  • Deleted
    quinta-feira, 11 de julho de 2019 17:04