to_char rellenar postgres lpad izquierda eliminar con ceros cadena sql postgresql

postgres - rellenar con ceros a la izquierda sql



Relleno de ceros a la izquierda en postgreSQL (3)

Soy relativamente nuevo en PostgreSQL y sé cómo rellenar un número con ceros a la izquierda en SQL Server, pero estoy luchando por resolver esto en PostgreSQL.

Tengo una columna numérica donde el número máximo de dígitos es 3 y el mínimo es 1: si es un dígito tiene dos ceros a la izquierda y si es 2 dígitos tiene 1, por ejemplo 001, 058, 123

En SQL Server puedo usar lo siguiente:

RIGHT(''000'' + cast([Column1] as varchar(3)), 3) as [Column2]

Esto no existe en PostgreSQL. Cualquier ayuda sería apreciada.


La función to_char() está allí para dar formato a los números:

select to_char(column_1, ''fm000'') as column_2 from some_table;

El prefijo fm ("modo de relleno") evita los espacios iniciales en el varchar resultante. El 000 simplemente define el número de dígitos que desea tener.

psql (9.3.5) Type "help" for help. postgres=> with sample_numbers (nr) as ( postgres(> values (1),(11),(100) postgres(> ) postgres-> select to_char(nr, ''fm000'') postgres-> from sample_numbers; to_char --------- 001 011 100 (3 rows) postgres=>

Para más detalles sobre el formato de la imagen, consulte el manual:
http://www.postgresql.org/docs/current/static/functions-formatting.html


Puede usar las funciones rpad y rpad para rellenar los números a la derecha o a la izquierda, respectivamente. Tenga en cuenta que esto no funciona directamente en los números, por lo que tendrá que usar ::char o ::text para convertirlos:

SELECT RPAD(numcol::text, 3, ''0''), -- Zero-pads to the right up to the length of 3 LPAD(numcol::text, 3, ''0''), -- Zero-pads to the left up to the length of 3 FROM my_table