Preencher Zeros à Esquerda com a Função LPAD no Oracle e PostgreSQL

Tanto no Oracle quanto no PostgreSQL, podemos utilizar a função LPAD para preencher caracteres no lado esquerdo de uma string. Isso é útil, por exemplo, quando precisamos padronizar códigos, IDs ou números com zeros à esquerda, garantindo que todos tenham o mesmo comprimento.

A função LPAD possui a seguinte sintaxe:

LPAD(string, comprimento, caractere)
  • string: A string original que queremos preencher.
  • comprimento: O tamanho total desejado para a string final, incluindo os caracteres preenchidos.
  • caractere: O caractere que será adicionado no lado esquerdo da string. Pode ser qualquer caractere, mas, para o propósito deste tutorial, usaremos o caractere 0.

Exemplos no Oracle

Vamos supor que temos o número 123, e queremos que ele tenha um comprimento total de 6 dígitos, preenchendo com zeros à esquerda.

Aqui está como você pode fazer isso no Oracle:

SELECT LPAD('123', 6, '0') AS resultado FROM dual;

O resultado será: 000123.

Outro exemplo mais prático seria aplicar isso em uma tabela de produtos, onde queremos padronizar os IDs dos produtos para que todos tenham 8 dígitos:

SELECT LPAD(produto_id, 8, '0') AS id_formatado
FROM produtos;

Exemplos no PostgreSQL

A mesma função LPAD também está disponível no PostgreSQL. Vamos ver como funciona para o mesmo exemplo anterior:

SELECT LPAD('123', 6, '0') AS resultado;

Isso retornará: 000123.

E, em uma aplicação real com tabelas:

SELECT LPAD(codigo_produto, 8, '0') AS codigo_formatado
FROM produtos;

Conclusão

A função LPAD no Oracle e no PostgreSQL é muito útil quando precisamos padronizar o comprimento de strings, preenchendo-as com zeros ou outros caracteres à esquerda. Ela é simples de usar e resolve facilmente problemas de formatação de dados.

Se você precisa garantir que seus códigos ou IDs tenham um formato específico, LPAD é uma solução ideal. Teste essa função em seus próprios projetos e deixe seu sistema de banco de dados mais organizado e padronizado!

Até o próximo post.