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.
format()
función que te permitirá usarformat(Column1,'000') as Column2
.Respuestas:
Puede utilizar las funciones
rpad
ylpad
para rellenar números hacia la derecha o hacia la izquierda, respectivamente. Tenga en cuenta que esto no funciona directamente con los números, por lo que tendrá que usarlos::char
o::text
lanzarlos:fuente
printf
, estas funciones de cabeza de hueso cortarán silenciosamente su cuerda al tamaño si no encaja. Por lo que es posible que necesite unacase when length(foo) ...
solución.La
to_char()
función está ahí para formatear números:El
fm
prefijo ("modo de relleno") evita los espacios iniciales en el varchar resultante. los000
simplemente define el número de dígitos que desea tener.Para obtener más detalles sobre el formato de imagen, consulte el manual:
http://www.postgresql.org/docs/current/static/functions-formatting.html
fuente
to_char
convierte a ###. OoTan fácil como
Referencias:
sqlfiddle: http://sqlfiddle.com/#!15/d41d8/3665
fuente
right()
en 9.1