MySQL - Completando quantidades fixas de caracteres com as funções LPAD() e RPAD()
Em PHP temos uma função não tão conhecida, str_pad(), que completa uma string com qualquer caractere até uma quantidade definida pelo programador. Esta função é extremamente útil no caso de codificações padronizadas onde a quantidade de caracteres deve ser sempre fixa.
No MySQL temos uma função equivalente chamada LPAD(). A sintaxe desta função é LPAD(CAMPO,QUANTIDADE DE CARACTERES,CARACTERE PARA COMPLETAR)
Vamos fazer uma query na tabela exemplo 'produtos' abaixo:
Vamos supor que o padrão de código exigido pelo sistema que lê o banco de dados seja de cinco (5) caracteres. Valores menores que este deverão ser preenchidos com zeros a esquerda
Teremos como resultado:
Assim como podemos preencher as lacunas à esquerda também o podemos à direita com a função RPAD() e utilizando o mesmo esquema de parâmetros.
Apesar de simples o exemplo tem inúmeras utilidades no dia a dia e evita rotinas secundárias dentro da lógica do sistema para preencher as lacunas, já que o dado sai do banco no formato correto.
No MySQL temos uma função equivalente chamada LPAD(). A sintaxe desta função é LPAD(CAMPO,QUANTIDADE DE CARACTERES,CARACTERE PARA COMPLETAR)
Vamos fazer uma query na tabela exemplo 'produtos' abaixo:
cod | nome | valor
3 | Iphone | 3000.00
10 | Blue Ray | 1800.00
230| Book | 30.00
Vamos supor que o padrão de código exigido pelo sistema que lê o banco de dados seja de cinco (5) caracteres. Valores menores que este deverão ser preenchidos com zeros a esquerda
SELECT LPAD(cod,5,'0') AS cod, nome,valor FROM produtos
Teremos como resultado:
cod | nome | valor
000003 | Iphone | 3000.00
000010 | Blue Ray | 1800.00
000230 | Book | 30.00
Assim como podemos preencher as lacunas à esquerda também o podemos à direita com a função RPAD() e utilizando o mesmo esquema de parâmetros.
Apesar de simples o exemplo tem inúmeras utilidades no dia a dia e evita rotinas secundárias dentro da lógica do sistema para preencher as lacunas, já que o dado sai do banco no formato correto.
vlw!
ResponderExcluir