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

4 formas de convertir un número a un porcentaje en SQL Server (T-SQL)

Aquí hay 4 formas de convertir un número a un valor porcentual en SQL Server.

Estrictamente hablando, en realidad no lo estamos "convirtiendo" en un porcentaje. Estamos formateando el número como un porcentaje. Pero para hacer eso, necesitamos convertir el número de un tipo de datos numérico a una cadena.

Aquí hay 4 formas de hacerlo.

Ejemplo 1:la función FORMAT()

La opción más obvia para usar es FORMAT() función. Esto le permite mostrar números y fechas en un formato específico.

Este es un ejemplo del uso de esta función para mostrar un número como un porcentaje:

SELECT FORMAT(55, 'P') Result;

Resultado:

+------------+
| Result     |
|------------|
| 5,500.00 % |
+------------+

Observe que se agregaron cuatro ceros a nuestro valor (dos antes del punto decimal y dos después).

Se requeriría lo siguiente para hacer este 55 por ciento:

SELECT FORMAT(.55, 'P') Result;

Resultado:

+----------+
| Result   |
|----------|
| 55.00 %  |
+----------+

Si el número es el valor porcentual real que desea, puede hacer esto:

SELECT FORMAT(55 * .01, 'P') Result;

Resultado:

+----------+
| Result   |
|----------|
| 55.00 %  |
+----------+

También puede eliminar la parte fraccionaria agregando un cero al especificador de formato:

SELECT FORMAT(.55, 'P0') Result;

Resultado:

+----------+
| Result   |
|----------|
| 55 %     |
+----------+

Si es necesario, también puede agregar más lugares decimales:

SELECT FORMAT(.55123456, 'P7') Result;

Resultado:

+--------------+
| Result       |
|--------------|
| 55.1234560 % |
+--------------+

Ejemplo 2:la función CONVERTIR()

Alternativamente, puede usar CONVERT() para convertir el número en una cadena, luego agregue un signo de porcentaje al final.

Esto puede parecer un poco innecesario dado lo fácil que lo hizo el ejemplo anterior, sin embargo, el FORMAT() La función solo se introdujo en SQL Server 2012. Por lo tanto, así es como deberá hacerlo si usa una versión anterior de SQL Server.

SELECT CONVERT(VARCHAR(4), 55) + ' %' Result;

Resultado:

+----------+
| Result   |
|----------|
| 55 %     |
+----------+

Por supuesto, si su número es algo así como .55 y necesita que se muestre como 55,00 %, entonces siempre puede multiplicarlo por 100:

SELECT CONVERT(VARCHAR(6), 0.55 * 100) + ' %' Result;

Resultado:

+----------+
| Result   |
|----------|
| 55.00 %  |
+----------+

En este caso también aumenté el tamaño del varchar tipo de datos para atender a los caracteres adicionales.

Además, puede eliminar la parte fraccionaria usando LEFT() función:

SELECT CONVERT(VARCHAR(6), LEFT(0.55 * 100, 2)) + ' %' Result;

Resultado:

+----------+
| Result   |
|----------|
| 55 %     |
+----------+

Aunque debe tener cuidado al hacer esto, ya que el valor real podría variar y ser mayor o menor que 2. En cuyo caso, podría usar TRIM() función para recortar los ceros iniciales y/o los puntos finales:

SELECT CONVERT(VARCHAR(6), TRIM('0,.' FROM LEFT(0.55 * 100, 3))) + ' %' Result;

Resultado:

+----------+
| Result   |
|----------|
| 55 %     |
+----------+

Sin embargo, esto no es perfecto y el FORMAT() Obviamente, la función proporciona mucha más flexibilidad con un mínimo de código.

Ejemplo 3:la función CAST()

Alternativamente, podemos usar el CAST() función para hacer lo mismo que el ejemplo anterior:

SELECT CAST(55 AS VARCHAR(4)) + ' %' Result;

Resultado:

+----------+
| Result   |
|----------|
| 55 %     |
+----------+

Tenga en cuenta que CAST() y CONVERT() utilizar sintaxis ligeramente diferentes. En el caso de CAST() el valor a emitir es lo primero, mientras que es al revés con CONVERT() .

Ejemplo 4:CONCAT() Función

También puede usar el CONCAT() función para concatenar un número con el signo de porcentaje:

SELECT CONCAT(55, ' %') Result;

Resultado:

+----------+
| Result   |
|----------|
| 55 %     |
+----------+

Esta función convierte implícitamente todos los argumentos en tipos de cadena antes de la concatenación.