Formato moneda en SQL

Tengo un campo tipo float, que al hacer un select el campo monto me muestra:
2166.6700000000001
, ¿Qué función debo usar para poder mostrar este campo con sus enteros y solo dos decimales?
He intentado con vonvert y cast, pero no logro lo que deseo, agradezco tu asesoría
LL

2 Respuestas

Respuesta
1
Prueba con la función ROWND. Su sintaxis es:
ROUND ( campo_numerico [, num_decimales ] )
* campo_numérico => es un número o un campo tipo número de una tabla.
* num_decimales => cantidad de decimales a los que quieres redondear. Si pones 2, te deja 2 decinales. Si no indicas ese parámero, pone "0" decimales... es decir: los quita, pero redondeando (la función TRUNC las quita directamente sin redondear)
Por lo tanto, para lo que necesistas debes hacer:
select ROUND(tu_campo, 2) from tu_tabla;
Hola, cuando le he aplicado la función round, o me redondea por arriba o me omite los decimales (dependiendo del número que le coloque elçn el último parámetro).
Efectivamente. El segundo parámetro de la función ROUND es el número de decimales al que quieres redondear. Para los euros, se necesita redondear hasta 2 decimales, por lo que tienes que indicarlo siempre.
Con el número de tu ejemplo quedaría así:
SQL> select round(2166.6700000000001,2) from dual;
ROUND(2166.6700000000001,2)
---------------------------
2166,67
Respuesta
1
Convert (int, campo) debería funcionarte pero solo te daría la parte entera. Puedes utilizar Round(campo, 2) para que solo te saque la parte entera redondeada con sus dos decimales.
Esta función no hace lo que espero Round(campo, 2), tendrás otra opción. El resultado que obtengo es este: 2166.6700000000001.
Tendrás otra solución
A veces falla el redondeo con decimales flotantes. Prueba a hacer esta operación matemática para engañar a la máquina:
round(valor_float * 100)/100
A ver que tal. También existe una operación matemática con potencias (pow) para redondear a cualquier número de decimales:
round(numero*pow(10, decimales))/(pow(10, $decimales)))

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas