Ao longo do tempo vamos nos deparando com situações onde precisamos de um “remendo” ou um “jeitinho” para resolver determinada situação ou aplicar uma nova regra para suprir uma necessidade específica. Neste primeiro artigo vou mostrar uma boa prática para incluir caracteres à esquerda /direita de um campo.

Criando a Estrutura de Dados

Vamos criar a tabela abaixo com a seguinte estrutura:


create table tb_clientes

(

codcliente int not null,

fantasia char(255),

)

alter table tb_clientes add primary key (codcliente)

Em seguida vamos popular a mesma com os comandos abaixo:

insert into tb_clientes values(1,'Casa de Pastel do Jose')

insert into tb_clientes values(100,'Funilaria do Ronaldo')

insert into tb_clientes values(1000,'Mecanica do Joao')

Em seguida vamos popular a mesma com os comandos abaixo:


insert into tb_clientes values(1,'Casa de Pastel do Jose')

insert into tb_clientes values(100,'Funilaria do Ronaldo')

insert into tb_clientes values(1000,'Mecanica do Joao')

Replicando caracteres à esquerda/direita de um campo

Baseado na estrutura da tabela tb_clientes digamos que em uma determinada situação eu queira trazer no resultado da consulta o campo codcliente com zeros à esquerda.


select codcliente as valor_original, replicate('0', 6 - len(convert(char,codcliente))) + convert(char,codcliente) as valor_alterado from tb_clientes

Observe que para isso usamos a função replicate onde passamos dois parâmetros sendo o primeiro o caracter a ser replicado, que no nosso caso é o 0 e o segundo parâmetro é a quantidade de vezes que este sera replicado. Como este segundo parâmetro é dinâmico, ou seja, pode variar de acordo com o tamanho do campo fazemos a seguinte jogada.

Definimos o segundo parâmetro com o tamanho total (em caracteres) da coluna, onde no exemplo é 6, e subtraímos este total pelo tamanho do campo a ser replicado, no exemplo acima é codcliente, com isso teremos a quantia de vezes que o 0 será replicado para o campo codcliente. Para finalizar concatenamos o resultado da função replicate com o campo usado na replicação codcliente.

Para incrementar o caracter 0 à direita apenas invertemos os campos na concatenação não nos esquecendo de utilizar a função ltrim e rtrim para retirar os caracteres em branco.


select codcliente as valor_original, rtrim(convert(char,codcliente)) + ltrim(replicate('0', 6 - len(convert(char,codcliente)))) as valor_alterado from tb_clientes

Saiu na DevMedia!

  • Programe com o Node.js:
    De acordo com a sua página oficial, o Node.js é um ambiente de execução para JavaScript, assíncrono e orientado a eventos.

Saiba mais sobre SQL ;)

  • Guia Completo de SQL:
    Neste Guia Completo de SQL você encontrará todo o conteúdo que precisa para aprender sobre a SQL, linguagem de consulta estruturada utilizada por programadores e DBAs para a execução de consultas e comandos nos principais SGBDs do mercado.