Escrever um número com duas casas decimais servidor SQL
Como se escreve um número com duas casas decimais para o servidor sql?
10 answers
Tenta isto
SELECT CONVERT(DECIMAL(10,2),YOURCOLUMN)
Utilizar Str()
A Função. São necessários três argumentos (o número, o número total de caracteres para mostrar e o número de casas decimais para mostrar
Select Str(12345.6789, 12, 3)
Mostra: "12345.679" (3 espaços, 5 dígitos 12345, uma casa decimal e três casas decimais (679). - roda se tiver que truncar, (a menos que a parte inteira seja muito grande para o tamanho total, caso em que asteriscos são exibidos em vez disso.)
Para um Total de 12 caracteres, com 3 à direita das casas decimais ponto.
Geralmente você pode definir a precisão de um número em SQL, definindo-o com parâmetros. Para a maioria dos casos, este será NUMERIC(10,2)
ou Decimal(10,2)
- irá definir uma coluna como um número com 10 dígitos totais com uma precisão de 2 (casas decimais).
Edited for clarity
Isto funciona para mim e mantém sempre fracções de dois dígitos
23.1 ==> 23.10
25.569 ==> 25.56
1 ==> 1.00
Cast(CONVERT(DECIMAL(10,2),Value1) as nvarchar) AS Value2
DECLARE @test DECIMAL(18,6) = 123.456789
SELECT FORMAT(@test, '##.##')
123.46
Se você só precisa de duas casas decimais,a maneira mais simples é..
SELECT CAST(12 AS DECIMAL(16,2))
Ou
SELECT CAST('12' AS DECIMAL(16,2))
resultado
12.00
Se não se importar com arredondando o número em vez de truncá-lo, então é só:
ROUND(column_name,decimals)
Tenta isto:
declare @MyFloatVal float;
set @MyFloatVal=(select convert(decimal(10, 2), 10.254000))
select @MyFloatVal
Convert(decimal(18,2),r.AdditionAmount) as AdditionAmount
Multiplique o valor que deseja inserir (ex. 2, 99) por 100
Em seguida, inserir a divisão por 100 do resultado adicionando .01 até ao fim:
299.01/100
Isto permitirá um total de 10 dígitos com 2 valores após a casa decimal. Significa que pode acomodar o valor antes de decimal até 8 dígitos e 2 Depois de decimal.
Para validar, coloque o valor na seguinte consulta.
DECLARE vtest number(10,2);
BEGIN
SELECT 10.008 INTO vtest FROM dual;
dbms_output.put_line(vtest);
END;