sql >> Base de Datos >  >> RDS >> PostgreSQL

3 formas de dar formato a un número como porcentaje en PostgreSQL

Tenemos varias opciones si queremos mostrar números con un signo de porcentaje en PostgreSQL.

Podemos usar el TO_CHAR() función para formatear el número junto con el signo de porcentaje. O simplemente podemos concatenar el número con el signo de porcentaje, ya sea con CONCAT() función o con el operador de concatenación.

El TO_CHAR() Función

Esta opción implica pasar el número y un patrón de plantilla numérico a la función para devolver el número con el formato especificado por el patrón de plantilla. Para obtener un signo de porcentaje, lo incluimos en nuestro patrón de plantilla:

SELECT TO_CHAR(35, 'fm00D00%');

Resultado:

35.00%

Aquí, usé el 0 patrón de plantilla, lo que significa que la posición del dígito siempre se imprimirá, incluso si contiene un cero al principio o al final.

También usé el fm modificador de formato para suprimir los ceros iniciales o finales o los espacios en blanco.

Aquí está con algunos otros patrones de plantilla:

SELECT 
    TO_CHAR(7, 'fm00%') AS "1",
    TO_CHAR(7, 'fm99%') AS "2",
    TO_CHAR(7.4567, 'fm0D00%') AS "3",
    TO_CHAR(7, 'fm0D00%') AS "4";

Resultado:

+-----+----+-------+-------+
|  1  | 2  |   3   |   4   |
+-----+----+-------+-------+
| 07% | 7% | 7.46% | 7.00% |
+-----+----+-------+-------+

Podemos realizar un cálculo contra el número si es necesario:

SELECT 
    TO_CHAR(35 * 0.1, 'fm99D00%') AS "1",
    TO_CHAR(0.35 * 100, 'fm99D00%') AS "2";

Resultado:

+-------+--------+
|   1   |   2    |
+-------+--------+
| 3.50% | 35.00% |
+-------+--------+

En este caso incluyo el 9 patrón de plantilla para que se omitan los ceros iniciales.

El CONCAT() Función

Otra forma de hacerlo es usar CONCAT() función para concatenar el número y el signo de porcentaje:

SELECT CONCAT(35, '%');

Resultado:

35%

El Operador de Concatenación

Otra forma de concatenar el número y el signo de porcentaje es usar el operador de concatenación (|| ):

SELECT 35 || '%';

Resultado:

35%