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

Cómo formatear números en PostgreSQL

Cuando trabaje con Postgres, puede usar to_char() Función para generar números en un formato dado.

La forma en que funciona es que usted proporciona dos argumentos. El primer argumento es el número a formatear. El segundo argumento determina cómo se formatea.

El valor de retorno es texto .

Dependiendo de sus requisitos, es posible que prefiera convertir el número al tipo de datos apropiado, por ejemplo, usando cast() función.

A continuación se muestran ejemplos de ambos métodos.

Ejemplo

Aquí hay un ejemplo básico para demostrarlo.

SELECT to_char(10, '99.99'); 

Resultado:

10.00

El 9 s en realidad tienen un significado especial en este contexto. Este carácter es uno de los patrones de plantilla válidos en los que puede consistir su cadena de formato al formatear números.

En el caso de 9 , especifica una posición de dígito, pero si es un cero inicial, se reemplazará por un espacio, mientras que si es un cero final y se especifica el modo de relleno, se eliminará.

Si elimino el lugar decimal y la parte de los segundos fraccionarios, obtengo un resultado diferente.

SELECT to_char(10, '99'); 

Resultado:

10

Eliminar ceros a la izquierda

Puedes reemplazar 9 con 0 si desea suprimir los ceros iniciales y finales, incluso si son insignificantes.

Aquí hay un ejemplo que demuestra la diferencia entre los dos.

SELECT 
  to_char(0010, '9999') AS "9999",
  to_char(0010, '0000') AS "0000"; 

Resultado:

 9999 | 0000 -------+------- 10 | 0010

Patrones de plantilla

Como se vio en los ejemplos anteriores, la cadena de formato consta de uno o más patrones de plantilla.

Por ejemplo, 9999 es una cadena de formato que consta de cuatro patrones de plantilla, cada uno de los cuales es 9 .

El lugar decimal es otro patrón de plantilla.

Podría haber usado una D en lugar del lugar decimal. Eso usa la configuración regional actual para el formato real.

SELECT 
  to_char(10, '99.99') AS "99.99",
  to_char(10, '99D99') AS "99D99"; 

Resultado:

99,99 | 99D99 --------+-------- 10.00 | 10.00

Para obtener una lista completa de patrones y modificadores de plantilla, consulte Patrones y modificadores de plantilla para formato numérico en Postgres.

Modificadores de patrón de plantilla

También hay algunos modificadores que se pueden usar junto con el patrón de plantilla. Estos cambian la forma en que se formatea la salida, según el modificador utilizado.

Específicamente, hay tres modificadores que se pueden usar con formato numérico.

Modificador Descripción
FM prefijo modo de relleno (suprimir ceros finales y espacios en blanco de relleno)
TH sufijo sufijo de número ordinal en mayúsculas
th sufijo sufijo de número ordinal en minúsculas

Tenga en cuenta que el primero se agrega como prefijo al patrón de la plantilla y los otros dos se agregan como sufijo.

Números ordinales

Un requisito común es convertir un número en su ordinal. Podemos usar TH o th para eso, dependiendo de si queremos que el sufijo esté en mayúsculas o minúsculas.

He aquí un ejemplo.

SELECT to_char(03, 'FM99th'); 

Resultado:

3ro

En este caso también usé FM para suprimir los espacios en blanco y los ceros finales.

Aquí hay una comparación entre usar FM y omitiendo:

SELECT 
  to_char(03, '99th') AS "99th",
  to_char(03, 'FM99th') AS "FM99th"; 

Resultado:

 99 | FM99 -++-------- 3ra | 3º

Si observa detenidamente, la primera columna tiene espacios en blanco a la izquierda, mientras que la segunda columna no.

Moneda

Otro requisito común es generar un número en una moneda dada.

En este caso, podemos usar la L patrón de plantilla para mostrar un símbolo de moneda compatible con la configuración regional.

SELECT to_char(03, 'LFM99D00'); 

Resultado:

$3.00

Números con signo

También hay patrones de plantilla para números con signo.

He aquí un ejemplo.

SELECT to_char(27, 'S99'); 

Resultado:

+27

Aquí, usé S para agregar un signo que reconoce la configuración regional que está anclado al número.

En este caso fue un número positivo. Aquí hay otro ejemplo que usa un valor negativo.

SELECT to_char(-27, 'S99'); 

Resultado:

-27

Hay varios otros patrones de plantilla que se pueden usar para números con signo.

Para ver ejemplos, consulte Anteponer un signo más/menos a un número en Postgres.

Y como se mencionó, consulte Patrones y modificadores de plantilla para formato numérico en Postgres para obtener una lista completa de modificadores de plantilla que puede usar al formatear números.

Tipo de datos

Como se mencionó, el to_char() la función muestra su resultado como texto .

Dependiendo de sus requisitos, puede que le resulte mejor convertir el número a un tipo de datos más apropiado.

Este es un ejemplo que convierte un número en datos de dinero tipo.

SELECT cast(10 as money); 

Resultado:

$10.00