Em SQL,
LPAD()
é uma função comumente usada que preenche a parte esquerda de uma string com um caractere especificado. A função pode ser usada em strings e números, embora dependendo do DBMS, os números podem ter que ser passados como uma string antes de serem preenchidos. DBMSs que possuem um
LPAD()
incluem MySQL, MariaDB, PostgreSQL e Oracle. SGBDs que não tem um
LPAD()
incluem SQL Server e SQLite (embora existam outras maneiras de aplicar preenchimento esquerdo nesses DBMSs). Exemplo
Aqui está um exemplo para demonstrar como usar
LPAD()
em seu código SQL:SELECT LPAD('Look Left', 20);
Resultado:
+-----------------------+ | LPAD('Look Left', 20) | +-----------------------+ | Look Left | +-----------------------+
Neste exemplo, a parte esquerda da string é preenchida com um espaço (o caractere de preenchimento padrão) e a string resultante tem 20 caracteres (porque eu especifiquei
20
como segundo argumento). Oracle funciona da mesma forma, mas precisamos usar
FROM DUAL
ao fazer uma consulta como esta (sem consultar uma tabela real):SELECT LPAD('Look Left', 20)
FROM DUAL;
Resultado:
LPAD('LOOKLEFT',20) _______________________ Look Left
Especifique um caractere de preenchimento
O preenchimento não precisa necessariamente ser um espaço. Opcionalmente, podemos adicionar um terceiro argumento para especificar o caractere (ou caracteres) a ser usado no preenchimento.
SELECT LPAD('7', 3, '0');
Resultado:
007
Neste caso, preenchi um número com zeros. Na verdade, eu passei o número como uma string neste exemplo.
Em alguns SGBDs (como MariaDB e MySQL) podemos passar o número como um número, assim como o número para preenchê-lo:
SELECT LPAD(7, 3, 0);
Resultado:
007
Também podemos fazer isso no Oracle:
SELECT LPAD(7, 3, 0)
FROM DUAL;
Resultado:
007
Mas o PostgreSQL tem um problema com isso:
SELECT LPAD(7, 3, 0);
Resultado:
ERROR: function lpad(integer, integer, integer) does not exist
SQL Server
SQL Server não tem um
LPAD()
função, mas tem um FORMAT()
função que nos permite preencher números com zeros à esquerda:SELECT FORMAT(7, '000');
Resultado:
007
A forma como funciona é que passamos o número, seguido por uma string de formato. No exemplo acima, a string de formato é
000
. Esta é uma cadeia de caracteres de formato numérico personalizado que resulta no preenchimento do número original para que o resultado consista em três dígitos. Se ainda não houver três dígitos no número original, ele será preenchido com zeros. Para strings de teclado esquerdo no SQL Server, podemos fazer algo assim:
SELECT RIGHT('.......' + 'Cat', 7);
Resultado:
....Cat
Há também alguns outros equivalentes LPAD() no SQL Server.