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.

Listagem 1 Criando a tabela PESSOA

            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.

Listagem 2. Inserindo dados para teste na tabela PESSOA

            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%";
            
Utilizando o operador LIKE com percentual
Figura 1. Utilizando o operador LIKE com percentual

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%";
            
Utilizando o operador LIKE com underscore e percentual
Figura 2. Utilizando o operador LIKE com underscore e percentual

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);
            
Utilizando o operador IN
Figura 3. Utilizando o operador IN

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"
            
Utilizando o operador BETWEEN
Figura 4. Utilizando o operador BETWEEN

Curso relacionado: Curso de Oracle


Links Úteis: