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

4 funciones para formatear un número a 2 lugares decimales en SQL Server

Cuando usamos T-SQL con SQL Server, podemos formatear números usando varios métodos, dependiendo de nuestro formato deseado.

A continuación se muestran cuatro funciones que se pueden usar para dar formato a un número con dos decimales en SQL Server.

El CAST() Función

La forma más obvia de hacerlo es convertir el número a un tipo decimal. Dos funciones que pueden hacer esto por nosotros son CAST() y CONVERT() .

Aquí hay un ejemplo del uso de CAST() :

SELECT CAST(275 AS DECIMAL(5, 2));

Resultado:

275.00

Podemos usar este método incluso si el número ya es un valor decimal pero con más decimales.

Sin embargo, una cosa para recordar es que si está reduciendo la cantidad de lugares decimales de un número con más de dos lugares decimales, entonces podría terminar con el segundo lugar decimal redondeado hacia arriba:

SELECT CAST(275.4567 AS DECIMAL(5, 2));

Resultado:

275.46

El CONVERT() Función

Aquí, usamos CONVERT() para hacer lo mismo – convertir el número a decimal:

SELECT CONVERT(DECIMAL(5, 2), 275);

Resultado:

275.00

El FORMAT() Función

Otra forma de dar formato a un número con dos decimales es usar el FORMAT() función:

SELECT FORMAT(275, 'N2');

Resultado:

275.00

Esta función en realidad convierte el número en una cadena, por lo que, técnicamente, el resultado no es un tipo numérico.

El N2 parte se conoce como una cadena de formato. En este caso, N es para número y 2 es para el número de lugares decimales (puede aumentar o disminuir esto según sea necesario).

La misma técnica se puede utilizar para reducir los lugares decimales a dos, de un número con más lugares decimales:

SELECT FORMAT(275.4567, 'N2');

Resultado:

275.46

Se ha redondeado, al igual que cuando convertimos el número en el otro ejemplo.

Otra forma de hacerlo es usar una cadena de formato personalizado. Las cadenas de formato personalizado le permiten especificar un formato que podría no ser compatible con una cadena de formato estándar.

Este es un ejemplo del uso de cadenas de formato personalizado:

SELECT 
    FORMAT(275, '###.##') AS "###.##",
    FORMAT(275, '000.00') AS "000.00",
    FORMAT(275.4567, '###.##') AS "###.##",
    FORMAT(275.4567, '000.00') AS "000.00";

Resultado:

+----------+----------+----------+----------+
| ###.##   | 000.00   | ###.##   | 000.00   |
|----------+----------+----------+----------|
| 275      | 275.00   | 275.46   | 275.46   |
+----------+----------+----------+----------+

Podemos ver que hay una diferencia entre usar # y 0 en la cadena de formato. El # El especificador de formato suprime cualquier cero insignificante mientras que el 0 el especificador de formato no.

Pero quizás lo más importante (a los efectos de este artículo), el 0 El especificador de formato le permite agregar ceros insignificantes si no están presentes en el número original. Por lo tanto, se puede usar para agregar dos lugares decimales a un número entero (como se ve en el ejemplo anterior).

El STR() Función

Otra forma de dar formato a un número con dos decimales es usar STR() función:

SELECT STR(275, 6, 2);

Resultado:

275.00

Esta función devuelve datos de caracteres convertidos a partir de datos numéricos. Los datos de caracteres están justificados a la derecha, con una longitud especificada y precisión decimal.

El primer argumento es una expresión de tipo de datos flotante con punto decimal.

El segundo argumento es la longitud total. Esto incluye punto decimal, signo, dígitos y espacios. El valor predeterminado es 10.

El tercer argumento es el número de lugares a la derecha del punto decimal. Este debe ser menor o igual a 16.