No PostgreSQL, podemos usar o
TO_CHAR()
função para adicionar zeros à esquerda a um número. A função converte o número em uma string, usando o formato (opcional) que especificamos. Outra opção é usar o
LPAD()
função para preencher um número com zeros à esquerda. O TO_CHAR()
Função
Ao usar o
TO_CHAR()
função, use o 0
elemento de formato para incluir zeros à esquerda e/ou à direita. Exemplo:
SELECT TO_CHAR(7, 'fm000');
Resultado:
007
Aqui está quando comparado ao
9
elemento de formato:SELECT
TO_CHAR(7, 'fm999') AS "9",
TO_CHAR(7, 'fm000') AS "0";
Resultado:
9 | 0 ---+----- 7 | 007
O número de zeros à esquerda é determinado pelo número de
0
elementos de formato e o número de dígitos no número:SELECT
TO_CHAR(77, 'fm0') AS "r1",
TO_CHAR(77, 'fm00000') AS "r2",
TO_CHAR(777, 'fm00000') AS "r3",
TO_CHAR(7777, 'fm00000') AS "r4",
TO_CHAR(77777, 'fm00000') AS "r5";
Resultado:
r1 | r2 | r3 | r4 | r5 ----+-------+-------+-------+------- # | 00077 | 00777 | 07777 | 77777
O
fm
O modificador de formato suprime qualquer preenchimento à esquerda e/ou à direita que possa ser incluído no resultado. Por exemplo, quando o número é negativo, um sinal de menos é prefixado. Mas quando o número é positivo, nenhum sinal é incluído e um espaço aparece onde o sinal de mais deveria estar. Aqui está um exemplo para demonstrar isso:
SELECT
TO_CHAR(-7, '000') AS "Minus Sign",
TO_CHAR(7, '000') AS "Padded",
TO_CHAR(7, 'fm000') AS "Not Padded";
Resultado:
Minus Sign | Padded | Not Padded ------------+--------+------------ -007 | 007 | 007
O LPAD()
Função
Alternativamente, podemos usar o
LPAD()
função para preencher números com zeros à esquerda:SELECT LPAD('7', 3, '0');
Resultado:
007
Outro exemplo:
SELECT
LPAD('77', 1, '0') AS "r1",
LPAD('77', 5, '0') AS "r2",
LPAD('777', 5, '0') AS "r3",
LPAD('7777', 5, '0') AS "r4",
LPAD('77777', 5, '0') AS "r5";
Resultado:
r1 | r2 | r3 | r4 | r5 ----+-------+-------+-------+------- 7 | 00077 | 00777 | 07777 | 77777
Observe que esta função requer que o número seja passado como uma string. Portanto, precisamos converter o número em uma string primeiro. O caractere de preenchimento também precisa ser uma string.
Então talvez tenhamos que fazer algo assim:
SELECT LPAD(CAST(7 AS varchar), 3, '0');
Resultado:
007
Um dos benefícios que
LPAD()
tem sobre o método anterior é que podemos prefixar o resultado com outros caracteres – não precisa ser um zero à esquerda. SELECT
LPAD('77', 1, '.') AS "r1",
LPAD('77', 5, '.') AS "r2",
LPAD('777', 5, '.') AS "r3",
LPAD('7777', 5, '.') AS "r4",
LPAD('77777', 5, '.') AS "r5";
Resultado:
r1 | r2 | r3 | r4 | r5 ----+-------+-------+-------+------- 7 | ...77 | ..777 | .7777 | 77777