Truncar (no redondear) lugares decimales en SQL Server

Resuelto Ryan Eastabrook asked hace 16 años • 21 respuestas

Estoy tratando de determinar la mejor manera de truncar o eliminar decimales adicionales en SQL sin redondear. Por ejemplo:

declare @value decimal(18,2)

set @value = 123.456

Esto se redondeará automáticamente @valuea 123.46, lo cual es bueno en la mayoría de los casos. Sin embargo, para este proyecto, no necesito eso. ¿Existe una forma sencilla de truncar los decimales que no necesito? Sé que puedo usar la left()función y convertirla nuevamente a decimal. ¿Hay otras maneras?

Ryan Eastabrook avatar Sep 04 '08 22:09 Ryan Eastabrook
Aceptado
ROUND ( 123.456 , 2 , 1 )

Cuando el tercer parámetro ! = 0, se trunca en lugar de redondearse.

Sintaxis

ROUND ( numeric_expression , length [ ,function ] )

Argumentos

  • numeric_expression Es una expresión de la categoría de tipo de datos numérico exacto o numérico aproximado, excepto el tipo de datos de bits.

  • length Es la precisión con la que se redondeará la expresión_numérica. length debe ser una expresión de tipo tinyint, smallint o int. Cuando la longitud es un número positivo, la expresión numérica se redondea al número de posiciones decimales especificadas por la longitud. Cuando la longitud es un número negativo, la expresión_numérica se redondea en el lado izquierdo del punto decimal, según lo especificado por la longitud.

  • function Es el tipo de operación a realizar. La función debe ser tinyint, smallint o int. Cuando la función se omite o tiene un valor de 0 (predeterminado), la expresión numérica se redondea. Cuando se especifica un valor distinto de 0, se trunca la expresión_numérica.

Jeff Cuscutis avatar Sep 04 '2008 16:09 Jeff Cuscutis

Deberá proporcionar 3 números a la función REDONDEAR.

  1. Número requerido. El número a redondear
  2. decimales obligatorios. El número de decimales para redondear el número a la operación.
  3. Opcional. Si es 0, redondea el resultado al número de decimales. Si es otro valor distinto de 0, trunca el resultado al número de decimales. El valor predeterminado es 0

Ejemplo:

   select round(123.456, 2, 1)

Trabaja en:

  • SQL Server (a partir de 2008), Azure SQL Database, Azure SQL Data Warehouse, Parallel Data Warehouse

Información adicional: https://www.w3schools.com/sql/func_sqlserver_round.asp

Jimmy avatar Sep 04 '2008 15:09 Jimmy