Eu sou relativamente novo no PostgreSQL e sei como preencher um número com zeros à esquerda no SQL Server, mas estou lutando para descobrir isso no PostgreSQL.
Tenho uma coluna de números onde o número máximo de dígitos é 3 e o mínimo é 1: se for um dígito, terá dois zeros à esquerda e se for 2 dígitos terá 1, por exemplo, 001, 058, 123.
No SQL Server, posso usar o seguinte:
RIGHT('000' + cast([Column1] as varchar(3)), 3) as [Column2]
Isso não existe no PostgreSQL. Qualquer ajuda seria apreciada.
format()
função, que vai deixar você usarformat(Column1,'000') as Column2
.Respostas:
Você pode usar as funções
rpad
elpad
para preencher números à direita ou à esquerda, respectivamente. Observe que isso não funciona diretamente com números, então você terá que usá -los::char
ou::text
lançá-los:fonte
printf
, essas funções com cabeça de osso cortam silenciosamente sua corda no tamanho certo, se ela não couber. Então, você pode precisar de umacase when length(foo) ...
solução.A
to_char()
função existe para formatar números:O
fm
prefixo ("modo de preenchimento") evita espaços à esquerda no varchar resultante. O000
simplesmente define o número de dígitos que você deseja ter.Para obter mais detalhes sobre o formato de imagem, consulte o manual:
http://www.postgresql.org/docs/current/static/functions-formatting.html
fonte
to_char
converte-o em ###. OoTão fácil quanto
Referências:
sqlfiddle: http://sqlfiddle.com/#!15/d41d8/3665
fonte
right()
em 9.1