Resumo : neste tutorial, você aprenderá como usar a LPAD()
função MySQL para preencher à esquerda uma string com um conjunto específico de caracteres em um comprimento especificado.
Introdução à função MySQL LPAD()
A LPAD()
função permite preencher à esquerda uma string com um conjunto específico de caracteres até um comprimento especificado.
Aqui está a sintaxe da LPAD()
função:
LPAD(string, length, pad_string)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Nesta sintaxe:
string
: a string de entrada que você deseja preencher à esquerda.length
: O comprimento total da string resultante após o preenchimento.pad_string
: a string que você usa para preenchimento.
Se algum argumento for NULL
, o LPAD()
retornará NULL
.
Na prática, você usa a LPAD()
função de formatação de strings com comprimento consistente, alinha texto em colunas ou prepara dados para exibição.
Exemplo de função MySQL LPAD()
Vejamos alguns exemplos de uso da LPAD()
função.
1) Usando a função LPAD() para preencher à esquerda uma string numérica com zeros
O exemplo a seguir usa a LPAD()
função para preencher à esquerda uma sequência numérica com zero. A string de resultado tem sempre 5 caracteres:
SELECT
LPAD('123', 5, '0');
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+---------------------+
| LPAD('123', 5, '0') |
+---------------------+
| 00123 |
+---------------------+
1 row in set (0.00 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
O exemplo a seguir mostra como preencher sequências numéricas à esquerda com zeros:
SELECT
LPAD('123', 5, '0'),
LPAD('1234', 5, '0'),
LPAD('12345', 5, '0');
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+---------------------+----------------------+-----------------------+
| LPAD('123', 5, '0') | LPAD('1234', 5, '0') | LPAD('12345', 5, '0') |
+---------------------+----------------------+-----------------------+
| 00123 | 01234 | 12345 |
+---------------------+----------------------+-----------------------+
1 row in set (0.00 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
2) Usando a função LPAD() para preencher à esquerda uma string com espaços
O exemplo a seguir usa a LPAD()
função para preencher à esquerda uma string com dois espaços:
SELECT LPAD('MySQL',7, ' ');
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+----------------------+
| LPAD('MySQL',7, ' ') |
+----------------------+
| MySQL |
+----------------------+
1 row in set (0.00 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
3) Usando a função LPAD() com dados da tabela
Usaremos a employees
tabela do banco de dados de exemplo para a demonstração:
A consulta a seguir usa a LPAD()
função para gerar uma estrutura em árvore de funcionários e seus gerentes dentro de uma organização.
WITH RECURSIVE employee_paths AS
( SELECT employeeNumber,
reportsTo managerNumber,
firstName,
1 lvl
FROM employees e
WHERE reportsTo IS NULL
UNION ALL
SELECT e.employeeNumber,
e.reportsTo,
e.firstName,
lvl+1
FROM employees e
INNER JOIN employee_paths ep ON ep.employeeNumber = e.reportsTo )
SELECT employeeNumber,
managerNumber,
lvl,
CONCAT_WS(' ',LPAD('',lvl, '-'), firstName) firstName
FROM employee_paths ep
ORDER BY lvl, firstName;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+----------------+---------------+------+---------------+
| employeeNumber | managerNumber | lvl | firstName |
+----------------+---------------+------+---------------+
| 1002 | NULL | 1 | - Diane |
| 1076 | 1002 | 2 | -- Jeff |
| 1056 | 1002 | 2 | -- Mary |
| 1143 | 1056 | 3 | --- Anthony |
| 1102 | 1056 | 3 | --- Gerard |
| 1621 | 1056 | 3 | --- Mami |
| 1088 | 1056 | 3 | --- William |
| 1611 | 1088 | 4 | ---- Andy |
| 1504 | 1102 | 4 | ---- Barry |
| 1286 | 1143 | 4 | ---- Foon Yue |
| 1323 | 1143 | 4 | ---- George |
| 1370 | 1102 | 4 | ---- Gerard |
| 1188 | 1143 | 4 | ---- Julie |
| 1501 | 1102 | 4 | ---- Larry |
| 1165 | 1143 | 4 | ---- Leslie |
| 1166 | 1143 | 4 | ---- Leslie |
| 1337 | 1102 | 4 | ---- Loui |
| 1702 | 1102 | 4 | ---- Martin |
| 1401 | 1102 | 4 | ---- Pamela |
| 1612 | 1088 | 4 | ---- Peter |
| 1216 | 1143 | 4 | ---- Steve |
| 1619 | 1088 | 4 | ---- Tom |
| 1625 | 1621 | 4 | ---- Yoshimi |
+----------------+---------------+------+---------------+
23 rows in set (0.00 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Neste exemplo, usamos a LPAD()
função para preencher à esquerda o caractere -
com base no nível do funcionário na estrutura hierárquica.
Veja como funciona.
WITH RECURSIVE employee_paths AS
: esta cláusula inicia a definição de uma expressão de tabela comum (CTE) chamadaemployee_paths
. ARECURSIVE
palavra-chave indica que este CTE será usado recursivamente.( SELECT employeeNumber, reportsTo managerNumber, firstName, 1 lvl FROM employees e WHERE reportsTo IS NULL
: Esta é a parte inicial (ou base) do CTE. Seleciona funcionários cujoreportsTo
campo éNULL
, que representa a alta administração ou funcionários que não possuem gestores. Ele atribui um nível (lvl
) de 1 a esses funcionários de nível superior.UNION ALL
: é usado para combinar os resultados das partes recursivas inicial e subsequente do CTE.SELECT e.employeeNumber, e.reportsTo, e.firstName, lvl+1 FROM employees e INNER JOIN employee_paths ep ON ep.employeeNumber = e.reportsTo
: Esta é a parte recursiva do CTE. Seleciona os funcionários (e
) e seus atributos (número do funcionário, número do gerente, nome) onde o número do gerente do funcionário (reportsTo
) corresponde aoemployeeNumber
dos registros no CTE (employee_paths
). Também incrementa o nível (lvl
) em 1 para cada iteração.- A
SELECT
instrução após o CTE é usada para recuperar os resultados finais do CTE. SELECT employeeNumber, managerNumber, lvl, CONCAT_WS(' ',LPAD('',lvl, '-'), firstName) firstName FROM employee_paths ep
: esta parte da consulta recupera as seguintes colunas:employeeNumber
: o identificador exclusivo do funcionário.managerNumber
: o identificador exclusivo do gerente do funcionário.lvl
: o nível ou profundidade do funcionário na hierarquia da organização.CONCAT_WS(' ',LPAD('',lvl, '-'), firstName) firstName
: Concatena os seguintes valores:LPAD('',lvl, '-')
: preenche à esquerda uma string vazia com hífens (com base nolvl
valor) para criar um recuo que representa a posição do funcionário na hierarquia.firstName
: O primeiro nome do funcionário.
ORDER BY lvl, firstName
: o conjunto de resultados final é ordenado primeiro pelo nível (lvl
) para manter a ordem hierárquica e depois pelo primeiro nome (firstName
) dentro de cada nível.
Para obter informações detalhadas sobre o CTE recursivo, consulte o tutorial MySQL Recursive CTE .
Resumo
- Use a função MySQL
LPAD()
para preencher à esquerda uma string com um conjunto específico de caracteres até um comprimento especificado.