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
Tan fácil como
SELECT lpad(42::text, 4, ''0'')
Referencias:
sqlfiddle: http://sqlfiddle.com/#!15/d41d8/3665