logo

Aula 05 – Oracle/SQL – concat, substr, length, instr, lpad/rpad, replace e trim

Queridos alunos,

Neste post damos continuidade aos nossos estudos sobre Oracle/SQL. Nele vamos abordar os seguintes parâmetros:

  • concat
  • substr
  • lenght
  • instr
  • lpad/rpad
  • replace
  • trim

Parametro concat

exemplo 01:
select first_name,last_name from employees

Explicaçao: este comando nao tras nenhuma novidade. Observe que na saida dele obtemos 2 (DUAS) colunas, onde
observamos o nome e sobrenome exibidos de forma separada. Veja no exemplo abaixo como fazer para juntar os dois
conteudos em apenas um unico campo, utilizando o parametro CONCAT.

Exemplo 02:
Select concat(first_name,last_name) from employees

Explicaçao: O comando concat (De “CONCATENAR”) serve para juntar dois conteudos de campos diferentes, mesmo que
sejam de tipos diferentes, observadas uma ou outra exceçao. No entanto, observe que o conteudo veio literalmente
“grudado”. Veja no exemplo abaixo como formatar melhor esta saída, inclusive nomeando a coluna para um nome mais
apropriado

Exemplo 03:
Select first_name ||’ ‘|| last_name as “Nome completo” from employees

Explicacao: A utilizacao de || (Pipe duplo) serve para concatenar campos e, ao mesmo tempo, para que conteudos de
texto sejam escritos para remontar a saida, conforme exemplo abaixo.

Exemplo 04:
Select ‘Primeiro nome: ‘ || first_name ||’ Sobrenome: ‘|| last_name as “Nome completo” from employees

Exemplo 05:
Select q'[Primeiro nome: ]’ || first_name ||’ Sobrenome: ‘|| last_name as “Nome completo” from employees

Parametro Subtr

Exemplo 06:
select substr(last_name,1,3) from employees

Explicaçao: O comando substr serve para definir um “corte” em um determinado conteudo de um campo, sendo possivel
indicar o caractere inicial e o final. No exemplo acima todos os “ultimos nomes”dos funcionarios (last_name) terao
apenas 3 (tres) letras, iniciando da primeira, ate a terceira letra apos a letra indicada para inicio “1,3”. Ou
seja, o comando contara 3 letras APOS a primeira letra.

Exemplo 7:
select substr(last_name,2,2) from employees

Explicaçao:
No exemplo acima eu solicito que a consulta me retorne o last_name dos funcionarios com apenas 2 caracteres,
iniciando a partir do segundo caractere.

Parametro lenght

Exemplo 8:
select last_name, length(last_name) from employees

Explicaçao: Length (Traduçao: Extensao) é um parametro utilizado para se contar quantos caracteres existem
armazenados nos campos. neste exemplo solicitei que me fosse retornado o nome dos funcionarios e uma coluna
adicional onde foi exibida a quantidade de caracteres em cada campo.

Parametro instr

Exemplo 9:
select instr(‘Boa noite’, ‘n’) from dual

Explicacao: Nesta consulta eu solicito que seja informada a posiçao da letra “N” dentro da frase “Boa Noite”.
Obviamente o caractere “Em branco” (O espaço em branco) é contabilizado, retornando para mim o numero “5”como
resposta. Obs.: Utilizei uma palavra explicita (Boa noite), ao inves de um conteudo do banco de dados, visando um
melhor entendimento, e o “ambiente de teste DUAL”.

Exemplo 10:
select instr(‘Um Boi disse oi para outro boi no meio da noite’, ‘oi’) as “Localizacao da palavra OI”from dual

Explicacao: Nesta consulta eu solicito que seja informada a posiçao do conjunto de caracteres “oi” dentro da frase
definida. Obviamente o caractere “Em branco” (O espaço em branco) é contabilizado, retornando para mim o numero
“5”como resposta, de novo.

Parametro LPAD/RPAD

Exemplo 11:
select last_name as “Nome normal”, rpad(last_name, 20, ‘#’) as “Nome modificado” from employees

Explicacao: Nesta consulta solicito que me retorne a coluna do nome, sem modificaçao alguma, e outro coluna com a
modificaçao feita pelo RPAD com o tamanho de 20 (vinte) caracteres com o nome e preenchida pelo lado da DIREITA
com simbolos de “#”.

Exemplo 12:
select last_name as “Nome normal”, lpad(last_name, 10, ‘@’) as “Nome modificado” from employees

Explicaçao: Mesma do exemplo anterior, no entanto solicito que o campo venha com “tamanho” para 10 caracteres e
que o conteudo seja preenchido a ESQUERDA com simbolos de “@”.

Parametro replace

Exemplo 13:
select replace(‘O Boi disse oi para outro boi’, ‘oi’,’ui’) from dual

Explicacao: Este comando substitui (Traduçao: replace = substituir) o conjunto de caracteres “oi” por “ui”.

exemplo 14:
select last_name, job_id, replace(job_id, ‘_’, ‘.’) from employees

explicaçao: Utilizando um exemplo mais util que os anteriores… nesta consulta solicito o nome e a funçao de cada
empregado (Faço isto duas vezes), no entanto, na segunda incidencia da funçao, eu solicito que o simbolo “_” seja
substituido por “.”. O motivo é a mudança de visualizaçao para atender algum pedido, ou a adequaçao da saída para
migraçao para outro banco de dados onde, vamos imaginar, nao aceite armazenar o sinal “_” por causa de uma incompatibilidade.

parametro trim/ltrim/rtrim

exemplo 15:
select last_name, salary, trim(0 from salary) from employees

Explicaçao: o parametro trim (Traduçao aproximada: aparar, cortar) foi utulizado acima para retirar todos os 0
(zeros) existentes no salario, conforme voce deve estar observando na tela de seu computador (se voce estiver
fazendo o exercicio, eh claro)

Exemplo 16:
select ltrim(‘ Boa noite gente ‘) from dual

explicaçao: ltrim (Left Trim – corte a esquerda) remove todos os caracteres em branco presente na esquerda do
conteudo (eu coloquei 5 espaços em branco de cada lado)

Exemplo 17:
select rtrim(‘ Boa noite gente ‘) from dual

explicaçao: rtrim (right Trim – corte a direita) remove todos os caracteres em branco presente na direita do
conteudo

exemplo 18:
select trim(leading ‘_’ from ‘_____ teste _____’) from dual

Explicaçao: O uso do parametro LEADING (Traduaçao aproximada: Liderando, na frente) serve para remover o caractere
indicado, DESDE QUE ele esteja no começo da sentença/conteudo. Neste caso, solicitei que fossem removidos todos os
“_” que existissem no começo da frase.

exemplo 19:
select trim(trailing ‘_’ from ‘_____ teste _____’) from dual

Explicaçao: TRAILING (Traduçao aproximada: Aquilo que vem “puxado”, no final de algo) serve para remover o
caractere indicado que esta no final da sentença/conteudo

Obs.: É util se remover, por exemplo, 0 (zeros) presentes na esquerda de campos que contenham este tipo de
conteudo: “000864500”, para entender melhor, tente o exemplo abaixo.

Exemplo 20:
select trim(leading ‘0’ from ‘000864500’) from dual

 



3698 Visitas totais: 6 Visitas hoje:
Foto de perfil de Prof. César Felipe Gonçalves Silva
Graduado em gestão de infraestrutura de redes e pós-graduado nesta mesma área pela Universidade Tiradentes (UNIT), uma das maiores universidades do Nordeste. É escritor do Livro “Configuração de switches e roteadores CISCO” (Brasport/2013) e autor de 3 cursos online em vídeo aulas para o Instituto Politécnico de Educação à Distância (IPED – São Paulo). Professor há mais de 16 anos, atualmente escreve seu segundo livro na área de infraestrutura de redes de computadores.

Deixe um comentário

*

captcha *

Pular para a barra de ferramentas