sql >> Base de Datos >  >> RDS >> Sqlserver

Ejemplos de ROUND() en SQL Server

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      |
+------------+------------+