Usuário com melhor resposta
Campo convertido zerado

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
GOValeu!
- Editado TF_KS quinta-feira, 11 de julho de 2019 14:40
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
-
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]
- Editado Junior Galvão - MVPMVP quinta-feira, 11 de julho de 2019 15:40 Correção da escrita.
-
-
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
-
-
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]
- Editado Junior Galvão - MVPMVP quinta-feira, 11 de julho de 2019 16:45
-
-
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 -
-
-