alguém pode me explicar por que essa consulta retorna 0,000?
SELECT CAST(20/1024 AS NUMERIC(10,3))
Estou apenas tentando fazer uma conversão simples de MB para GB
Obrigado
alguém pode me explicar por que essa consulta retorna 0,000?
SELECT CAST(20/1024 AS NUMERIC(10,3))
Estou apenas tentando fazer uma conversão simples de MB para GB
Obrigado
Você está fazendo uma divisão inteira primeiro e depois converte o resultado. A divisão inteira resulta em 0. Converter 0 em
NUMERIC(10,3)
resulta em0.000
.SQL Fiddle
Configuração do esquema do MS SQL Server 2008 :
Consulta 1 :
Resultados :
Para obter uma divisão não inteira, você precisa converter pelo menos um dos dois números envolvidos em algo diferente de um inteiro. No caso de literais numéricos, basta adicionar um
.
após os dígitos:Consulta 2 :
Resultados :
No caso de variáveis ou colunas, você precisa converter uma delas usando
CAST
ouCONVERT
:Consulta 3 :
Resultados :
Você está usando o operador de divisão para fazer uma divisão inteira.
Citando a documentação do operador aritmético Divide dos livros online :
Para obter um resultado com uma parte decimal, você deve primeiro converter um dos operandos em um tipo de dados diferente –
FLOAT
ouNUMERIC
funciona bem.Por exemplo ( SQL Fiddle ):
Retornos
0.02
.Na verdade, eu já consertei, porque tive que lançar cada número inteiro, não a coisa toda. Então isso funcionou: