Alguns RDBMSs fornecem um
LPAD()
e RPAD()
função que nos permite pad esquerdo ou pad direito uma string. Algumas funções também nos permitem adicionar números de zeros à esquerda ou à direita. Abaixo estão exemplos de aplicação de preenchimento SQL em alguns dos RDBMSs mais populares.
Oráculo
A Oracle nos fornece
LPAD()
e RPAD()
especificamente para preencher a parte esquerda ou direita de uma string:SELECT LPAD('Cat', 20)
FROM DUAL;
Resultado:
LPAD('CAT',20) _______________________ Cat
Neste caso eu usei
LPAD()
para aplicar o preenchimento esquerdo, e a string resultante é de 20 caracteres, porque foi isso que usei para o segundo argumento. O resultado é preenchido por um espaço, porque esse é o caractere padrão usado para preenchimento. Se você não especificar com qual caractere preencher a string, um espaço será usado.
Você pode adicionar um terceiro caractere para especificar qual caractere usar para o preenchimento:
SELECT LPAD('7', 3, '0')
FROM DUAL;
Resultado:
LPAD('7',3,'0') __________________ 007
Nesse caso, preenchi um número com zeros (embora o resultado seja uma string).
Oracle também tem um
TO_CHAR(number)
função que pode ser usada para adicionar zeros à esquerda a um número:SELECT TO_CHAR(7, 'fm000')
FROM DUAL;
Resultado:
007
O
0
elemento de formato representa cada dígito no número original e zero se nenhum dígito existir nessa posição no número original. PostgreSQL
PostgreSQL também tem seu próprio
LPAD()
e RPAD()
funções:SELECT
LPAD('7', 3, '0') AS "Left Padding",
RPAD('7', 3, '0') AS "Right Padding",
LPAD(RPAD('7', 3, '0'), 5, '0') AS "Both";
Resultado:
Left Padding | Right Padding | Both --------------+---------------+------- 007 | 700 | 00700
E também tem seu próprio
TO_CHAR()
função que funciona muito como a função do Oracle de mesmo nome:SELECT TO_CHAR(7, 'fm000');
Resultado:
007
MariaDB
MariaDB tem seu próprio
LPAD()
e RPAD()
funções:SELECT
LPAD('7', 3, '0') AS "Left Padding",
RPAD('7', 3, '0') AS "Right Padding",
LPAD(RPAD('7', 3, '0'), 5, '0') AS "Both";
Resultado:
+--------------+---------------+-------+ | Left Padding | Right Padding | Both | +--------------+---------------+-------+ | 007 | 700 | 00700 | +--------------+---------------+-------+
E enquanto o MariaDB tem seu próprio
TO_CHAR()
função, não funciona em números (é limitado a valores de data e hora). MySQL
MySQL também tem seu próprio
LPAD()
e RPAD()
funções. Aqui está um exemplo de uso de
LPAD()
contra uma coluna do banco de dados:SELECT Genre, LPAD(Genre, 10, '.')
FROM Genres;
Resultado:
+---------+----------------------+ | Genre | LPAD(Genre, 10, '.') | +---------+----------------------+ | Rock | ......Rock | | Jazz | ......Jazz | | Country | ...Country | | Pop | .......Pop | | Blues | .....Blues | | Hip Hop | ...Hip Hop | | Rap | .......Rap | | Punk | ......Punk | +---------+----------------------+
SQL Server
O SQL Server é uma anomalia, pois não possui um
LPAD()
ou RPAD()
função. No entanto, o SQL Server tem um
FORMAT()
função que nos permite preencher facilmente números com zeros à esquerda:SELECT FORMAT(7, '000');
Resultado:
007
O segundo argumento é uma string de formato numérico personalizado que determina quantos caracteres a string resultante terá. O fato de eu ter usado zeros significa que o resultado terá zeros à esquerda, se necessário.
Para preencher strings no SQL Server, podemos fazer algo assim:
SELECT RIGHT('.......' + 'Cat', 7);
Resultado:
....Cat
Existem várias outras técnicas que podemos usar para aplicar preenchimento no SQL Server.