En SQL Server, el T-SQL ROUND()
le permite redondear un número a una longitud o precisión especificada.
Proporciona el número como argumento, así como la longitud a la que desea que se redondee el número. La función también acepta un tercer argumento opcional que le permite especificar si el número se redondea o se trunca.
Sintaxis
La sintaxis es así:
ROUND ( numeric_expression , length [ ,function ] )
Donde los argumentos tienen las siguientes definiciones:
- expresión_numérica
- Es una expresión de la categoría de tipo de datos numérico exacto o numérico aproximado, excepto por el bit tipo de datos.
- longitud
- ¿Es la precisión con la que numeric_expression es para ser redondeado. Este argumento debe ser una expresión de tipo tinyint , pequeña o int . Cuando es un número positivo, numeric_expression se redondea al número de posiciones decimales especificado por este argumento. Cuando es un número negativo, numeric_expression se redondea en el lado izquierdo del punto decimal, como se especifica en este argumento.
- función
- Es el tipo de operación a realizar. Esto debe ser tinyint , pequeña o int . Cuando este argumento se omite o tiene un valor de 0 (predeterminado), numeric_expression es redondeado Cuando se especifica un valor distinto de 0, numeric_expression está truncado.
Ejemplo 1:uso básico
Aquí hay un ejemplo básico para demostrar cómo funciona esta función.
SELECT ROUND(1.49, 1) Result;
Resultado:
+----------+ | Result | |----------| | 1.50 | +----------+
En este caso, el número se redondea hacia arriba.
Ejemplo 2:Cero lugares decimales
Si establecemos el segundo argumento en cero, esto es lo que sucede:
SELECT ROUND(1.49, 0) Result;
Resultado:
+----------+ | Result | |----------| | 1.00 | +----------+
Esto se debe a que especificamos cero partes fraccionarias con las que redondear el número.
Y esto es lo que sucede si cambio el número inicial a 1,50:
SELECT ROUND(1.50, 0) Result;
Resultado:
+----------+ | Result | |----------| | 2.00 | +----------+
Ejemplo 3:más decimales
Aquí hay un ejemplo donde el número a redondear contiene más lugares decimales.
SELECT ROUND(1.234, 2) Result;
Resultado:
+----------+ | Result | |----------| | 1.230 | +----------+
Y esto es lo que sucede cuando aumento el último dígito a 5:
SELECT ROUND(1.235, 2) Result;
Resultado:
+----------+ | Result | |----------| | 1.240 | +----------+
Por supuesto, podríamos usar muchos más lugares decimales. Por ejemplo, podríamos recortar muchos lugares decimales.
SELECT ROUND(1.23456789123456789, 8) Result;
Resultado:
+---------------------+ | Result | |---------------------| | 1.23456789000000000 | +---------------------+
Ejemplo 4:truncamiento (es decir, usar un tercer argumento)
Como se mencionó, podemos proporcionar un tercer argumento para especificar si el resultado se trunca o simplemente se redondea. Los ejemplos anteriores están todos redondeados porque no especificamos un tercer argumento. Cuando omitimos el tercer argumento, se usa un valor de 0 (lo que significa redondear el resultado). Si proporcionamos un valor distinto de 0, el resultado se trunca.
SELECT ROUND(1.236, 2) 'Rounded (by default)', ROUND(1.236, 2, 0) 'Rounded (explicitly)', ROUND(1.236, 2, 1) 'Truncated';
Resultado:
+------------------------+------------------------+-------------+ | Rounded (by default) | Rounded (explicitly) | Truncated | |------------------------+------------------------+-------------| | 1.240 | 1.240 | 1.230 | +------------------------+------------------------+-------------+
Ejemplo 5:uso de un valor negativo para el segundo argumento
Así es como podemos usar un valor negativo en el segundo argumento para hacer que partes de la parte no fraccionaria se redondeen a cero.
SELECT ROUND(123.456, -1) Result;
Resultado:
+----------+ | Result | |----------| | 120.000 | +----------+
Y así es como se redondea si aumentamos el 3
a 5
o más.
SELECT ROUND(125.456, -1) Result;
Resultado:
+----------+ | Result | |----------| | 130.000 | +----------+
Puedes hacer esto incluso si el número no contiene una parte fraccionaria.
SELECT ROUND(125, -1) Result;
Resultado:
+----------+ | Result | |----------| | 130 | +----------+
Ejemplo 6:redondeo de números negativos frente a números positivos
Como se vio en los ejemplos anteriores, cuando se usan números positivos, un valor con una parte fraccionaria de .5 o mayor se redondea al siguiente entero.
Sin embargo, cuando se usan números negativos, dichos valores se redondean hacia abajo .
SELECT ROUND(1.50, 0) Positive, ROUND(-1.50, 0) Negative;
Resultado:
+------------+------------+ | Positive | Negative | |------------+------------| | 2.00 | -2.00 | +------------+------------+