Usando os Operadores LIKE, IN e BETWEEN no Oracle
Aprenda nesse artigo de Oracle como usar operadores SQL LIKE e BETWEEN no Oracle.
A linguagem SQL dispõe de diversos operadores e cláusulas que nos permitem estruturar as consultas de acordo com nossa necessidade, a fim de obter o resultado esperado. Conhecer esses operadores é fundamental para que se possa construir as queries adequadamente e, comm isso, extrair do banco os dados necessários em cada situação.
Saiba mais sobre linguagem SQL
Neste artigo aprenderemos a trabalhar com os operadores LIKE IN e BETWEEN no Oracle, um dos principais sistemas gerenciadores de bancos de dados em uso atualmente.
Saiba mais sobre Oracle com o nosso Guia de Referência
Para os exemplos que veremos aqui, utilizaremos uma tabela chamada PESSOA, a qual deve conter alguns registros que nos permitam efetuar diferentes consultas. A Listagem 1 mostra o script necessário para criar essa tabela.
CREATE TABLE PESSOA
(
id_pessoa integer constraint id_pessoa_PK primary key,
nome varchar2(20),
cpf varchar2(14),
nascimento date
);
Em seguida, precisamos incluir alguns registros, o que pode ser feito utilizando o script da Listagem 2.
INSERT INTO PESSOA VALUES (1,"Luis da Silva","11109865424","20-06-1994");
INSERT INTO PESSOA VALUES (2,"Maria Joaquina","87604465334","20-07-1981");
INSERT INTO PESSOA VALUES (3,"José da Silva","54279835424","08-03-1999");
INSERT INTO PESSOA VALUES (4,"João Henrique","283835424","28-08-1981");
INSERT INTO PESSOA VALUES (5,"Eliézio Mesquita","1087865424","28-02-1985");
INSERT INTO PESSOA VALUES (6,"Gustavo Souza","7464465334","17-12-1995");
INSERT INTO PESSOA VALUES (7,"Wesley Yamazack","54329835424","12-10-1997");
INSERT INTO PESSOA VALUES (8,"Edson Arantes","90874465334","02-04-2005");
INSERT INTO PESSOA VALUES (9,"Silvio Santos","54279835424","17-07-1955");
INSERT INTO PESSOA VALUES (10,"Zico Galinho","654838724","15-11-2011");
INSERT INTO PESSOA VALUES (11,"Irá Almeida","1087865424","07-09-2000");
INSERT INTO PESSOA VALUES (12,"Lula da Silva","798465334","25-05-1974");
INSERT INTO PESSOA VALUES (13,"Dilma Russef","12329655424","03-01-1965");
COMMIT;
Saiba mais sobre operadores no Oracle
Operador Like
O operador LIKE é utilizado para buscar por uma determinada string dentro de um campo com valores textuais. Com ele podemos, por exemplo, buscar os registros cujo NOME inicia com uma determinada palavra, ou contém um certo texto.
Para efetuar esse tipo de consulta, podemos utilizar também o caractere % para indicar um "coringa", ou seja, um texto qualquer que pode aparecer no campo. Sua sintaxe padrão é a seguinte:
SELECT colunas FROM tabela WHERE campo LIKE "valor"
Nessa instrução, o "valor" pode ser informado de várias formas:
- texto: Nesse caso, serão retornados todos os registros que contêm no campo buscado exatamente o "texto" informado no filtro. O funcionamento aqui é equivalente a utilizar o operador de igualdade (=);
- %texto%: Serão retornados os registros que contêm no campo buscado o "texto" informado. Por exemplo, podemos buscar os nomes que contêm "Santos", ou que contêm uma sílaba ou letra específica. O registro com nome "Luis da Silva", por exemplo, contém o termo "da", então atenderia ao filtro "%da%";
- %texto: Serão retornados os registros cujo valor do campo filtrado termina com o "texto" informado. O %, nesse caso, indica que pode haver qualquer valor no começo do campo, desde que ele termine com o "texto". Por exemplo, o registro com nome "Luis da Silva" atenderia ao filtro "%Silva";
- texto%: Serão retornados os registros cujo valor do campo filtrado começa com o "texto" informado. Dessa vez, o % indica que após o "texto" pode haver qualquer valor. Por exemplo, o registro com nome "Luis da Silva", atenderia ao filtro "Luis%"
Considerando nossa tabela de exemplo, se executarmos a seguinte consulta, teremos como resultado os registros que aparecem na Figura 1:
SELECT * FROM PESSOA WHERE Nome LIKE "J%";
Além do %, existe ainda o símbolo especial underscore ou sublinhado (_), com o qual podemos efetuar filtros mais exatos sobre as colunas textuais, buscando por um termo em uma posição específica do texto. O underscore indica a quantidade de casas/caracteres antes ou depois do texto buscado. A seguir temos alguns exemplos de uso para que possamos compreender sua sintaxe:
- "_este": Filtra os registros que contém 1 caractere qualquer no começo e em seguida o termo "este". Por exemplo, seriam retornados registros contendo o valor "teste", "peste", "veste";
- "b_m": Filtra os registros que comecem com a letra "b", contenham 1 caractere em seguida, e depois a letra "m". Nesse caso, atenderiam a esse filtro, por exemplo, os valores "bom", "bem", "bPm", etc.
- "_u%": Filtra os registros cujo campo especificado comece com um caractere qualquer, em seguida contenha uma letra "u", e depois qualquer valor. Por exemplo, os valores "Luis da Silva" e "Gustavo" atenderiam a esse filtro.
O seguinte script pode ser executado sobre nossa tabela para que possamos visualizar o funcionamento do underscore na prática. O resultado será o que vemos na Figura 2.
Select * from Pessoa Where Nome LIKE "_u%";
Operador IN
O operador IN é utilizado quando desejamos consultar uma tabela, filtrando o valor de um de seus campos a partir de uma lista e possibilidades. Enquanto o operador de comparação de igualdade (=) avalia se os dois valores são iguais, o IN permite verificar se o valor de um campo se encontra em uma lista. Sua sintaxe é a seguinte:
SELECT campos FROM tabela WHERE campo IN (valor1, valor2, valor3);
Para testarmos esse operador com a tabela que criamos, podemos executar a seguinte consulta e teremos como resultado os registros que vemos na Figura 3.
SELECT * FROM Pessoa WHERE Id_Pessoa IN (2, 3, 7);
Nesse caso, filtramos apenas os registros que possuem o Id_Pessoa igual a 2, 3, ou 7.
Operador BETWEEN
Esse operador é usado quando precisamos recuperar as linhas de uma tabela cujo valor de um campo encontra-se em um intervalo especificado. Esse tipo de consulta é muito comum quando queremos filtrar os dados por intervalos de datas, por exemplo, para retornar os registros de um determinado período. Sua sintaxe é a seguinte:
SELECT campos FROM tabela WHERE campo BETWEEN inicio_intervalo AND fim_intervalo;
O seguinte script, cujo resultado é apresentado na Figura 4, retorna os registros da tabela PESSOA cuja data de nascimento esteja entre 01/01/1981 e 31/12/1990:
SELECT * FROM Pessoa WHERE Nascimento BETWEEN "01-01-1981" AND "31-12-1990"
Curso relacionado: Curso de Oracle
Links Úteis:
- Navegação entre telas no Android
- O que é GitHub?
- Otimizando consultas no Oracle
- Regra de negócio no banco de dados?
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo