Respuestas:
prueba esto
SELECT CONVERT(DECIMAL(10,2),YOURCOLUMN)
Str()
Función de uso Se necesitan tres argumentos (el número, el número total de caracteres para mostrar y el número de decimales para mostrar
Select Str(12345.6789, 12, 3)
muestra: '12345.679' (3 espacios, 5 dígitos 12345, un punto decimal y tres dígitos decimales (679). - se redondea si tiene que truncarse (a menos que la parte entera sea demasiado grande para el tamaño total, en cuyo caso en su lugar se muestran asteriscos).
para un total de 12 caracteres, con 3 a la derecha del punto decimal.
it rounds if it has to truncate
... a menos que la parte entera sea demasiado grande para el tamaño total, en cuyo caso se muestran asteriscos en su lugar. Esto se menciona en la documentación deSTR
. Aquí hay una cita de esa página:STR(1223,2) truncates the result set to **.
En general, puede definir la precisión de un número en SQL definiéndolo con parámetros. Para la mayoría de los casos, esto será NUMERIC(10,2)
o Decimal(10,2)
- definirá una columna como un Número con 10 dígitos totales con una precisión de 2 (lugares decimales).
Editado para mayor claridad
Esto funciona para mí y siempre mantiene fracciones de dos dígitos
23.1 ==> 23.10
25.569 ==> 25.56
1 ==> 1.00
Cast(CONVERT(DECIMAL(10,2),Value1) as nvarchar) AS Value2
Así es como lo hacen los niños hoy:
DECLARE @test DECIMAL(18,6) = 123.456789
SELECT FORMAT(@test, '##.##')
123,46
DECLARE @test DECIMAL(18,6) = 0.456789
luego SELECT FORMAT(@test, '##.##')
devuelve: .46
¿Cómo logra que muestre el cero inicial 0.46
:?
Prueba esto:
declare @MyFloatVal float;
set @MyFloatVal=(select convert(decimal(10, 2), 10.254000))
select @MyFloatVal
Convert(decimal(18,2),r.AdditionAmount) as AdditionAmount
Multiplique el valor que desea insertar (ej. 2.99) por 100
Luego inserte la división por 100 del resultado agregando .01 al final:
299.01/100
Esto permitirá un total de 10 dígitos con 2 valores después del decimal. Significa que puede acomodar el valor del valor antes del decimal hasta 8 dígitos y 2 después del decimal.
Para validar, coloque el valor en la siguiente consulta.
DECLARE vtest number(10,2);
BEGIN
SELECT 10.008 INTO vtest FROM dual;
dbms_output.put_line(vtest);
END;