Atenção: esse artigo tem um vídeo complementar. Clique e assista!
Neste artigo apresentaremos o uso de operadores texto, lógico e de conjunto em consultas SQL. Descreveremos vários operadores de texto, dentre eles: o operador like e o operador ||. Além disso, conheceremos também alguns operadores lógicos como and e or. Por fim, veremos também alguns operadores de conjunto como union e intersect.
Em que situação o tema útil:
Você pode utilizar operadores de texto para manipular a forma como strings são representadas tanto na apresentação dos dados quanto no processo de colocar condições de consulta em cláusulas where. Além disso, os operadores de conjunto e lógicos também se mostram fundamentais no dia a dia daqueles que trabalham com banco de dados no desenvolvimento de suas aplicação.
Resumo DevMan
Este artigo introduz os comandos SQL abordando também o uso de cláusulas de seleção e operadores. Para apoiar nossos estudos no uso da SQL, os exemplos aqui apresentados considerarão o uso dos SGBDs Oracle e MySQL.
A linguagem SQL é um padrão de banco de dados. Isto decorre da sua simplicidade e facilidade de uso. Ela se diferencia de outras linguagens de consulta a banco de dados no sentido em que uma consulta SQL especifica a forma do resultado e não o caminho para chegar a ele. Ela é uma linguagem declarativa em oposição a outras linguagens procedurais. Isto reduz o ciclo de aprendizado daqueles que se iniciam na linguagem.
Embora o SQL tenha sido originalmente criado pela IBM, rapidamente surgiram vários "dialetos" desenvolvidos por outros produtores. Essa expansão levou à necessidade de ser criado e adaptado um padrão para a linguagem. Esta tarefa foi realizada pela American National Standards Institute (ANSI) em 1986 e ISO em 1987.
O SQL foi revisto em 1992 e a esta versão foi dado o nome de SQL-92. Foi revisto novamente em 1999 e 2003 para se tornar SQL:1999 (SQL3) e SQL:2003, respectivamente. O SQL:1999 usa expressões regulares de emparelhamento, queries recursivas e gatilhos (triggers). Também foi feita uma adição controversa de tipos não-escalados e algumas características de orientação a objeto. O SQL:2003 introduz características relacionadas ao XML, sequências padronizadas e colunas com valores de auto-generalização (inclusive colunas-identidade).
Tal como dito anteriormente, o SQL, embora padronizado pela ANSI e ISO, possui muitas variações e extensões produzidas pelos diferentes fabricantes de sistemas gerenciadores de bases de dados. Tipicamente a linguagem pode ser migrada de plataforma para plataforma sem mudanças estruturais principais.
Um assunto interessante e presente em todas as implementações SQL são os operadores utilizados em cláusulas where.
Neste contexto, neste artigo apresentaremos o uso de operadores de texto, lógico e de conjunto em consultas SQL. Você pode utilizar operadores de texto para manipular a forma como strings são representadas tanto na apresentação dos dados quanto no processo de colocar condições de consulta em cláusulas where.
Neste artigo descreveremos dois operadores de texto: o operador like e o operador ||. Além disso, conheceremos também alguns operadores lógicos como and e or. Por fim, veremos também alguns operadores de conjunto como union e intersect.
Operadores de texto
Como vimos rapidamente, você pode utilizar operadores de texto para manipular a forma como strings são representadas, tanto na saída dos dados quanto no processo de filtro através da definição de condições em cláusulas where. Analisaremos a partir de agora os operadores de texto like e ||, sendo este último utilizado para operações de concatenação de caracteres.
LIKE
Vamos iniciar esta seção com um questionamento: o que você faria caso tivesse interesse em selecionar informações em um banco de dados cujo resultado da busca não precisasse ser exatamente igual ao critério definido no filtro? Para estas situações você deve utilizar o operador like. Antes de vermos seu funcionamento na prática, observe na Listagem 1 os dados da tabela que iremos manipular.
Listagem 1. Dados da tabela a ser manipulada
SQL> SELECT * FROM PARTS;
NAME LOCATION PARTNUMBER
----------- ----------- ----------
APPENDIX MID-STOMACH 1
ADAMS APPLE THROAT 2
HEART CHEST 3
SPINE BACK 4
ANVIL EAR 5
KIDNEY MID-BACK 6
6 rows selected.
Considerando o conjunto de dados exposto na Listagem 1 poderíamos colocar como desafio: como podemos retornar todas as partes localizadas na área traseira (back)? Uma rápida análise dos dados da tabela nos permite identificar duas partes: spine e kidney. Entretanto, o nome de sua localização não é exatamente igual back, mas contem back em seu nome.
Para lidar com estas situações podemos fazer uso do operador like. Conforme podemos observar na Listagem 2, utilizamos o operador like para efetuarmos esta busca com sucesso.
Listagem 2. Uso do operador like
SQL> SELECT *
2 FROM PARTS
3 WHERE LOCATION LIKE '%BACK%';
NAME LOCATION PARTNUMBER
------- -------- ----------
SPINE BACK 4
KIDNEY MID-BACK 6
2 rows selected.
...