PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

2 maneiras de adicionar zeros à esquerda no PostgreSQL


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