Olá pessoal, voltamos com nosso curso básico de SQL Server e neste artigo, veremos o uso da cláusula WHERE em conjunto com os operadores LIKE e NOT LIKE.
WHERE com LIKE
O operador LIKE é empregado nas situações em que usamos como base para realizar pesquisas (ou filtros) as colunas que estão no formato caractere, como as colunas NOMEPRODUTO e TIPOPRODUTO, de nossa tabela de Produtos.
Por exemplo, podemos usar esse operador para obter como resultado todos os produtos cuja primeira letra seja C. Para que isso aconteça, devemos executar a seguinte instrução presente na Figura 1.
Que nos resultará na Figura 2.
Como desejamos determinar apenas a letra inicial da palavra a fim de obter o resultado, devemos utilizar o caractere % para representar que quaisquer outros caracteres podem estar contidos na palavra, desde que ela se inicie com a letra C. Sendo assim, o % representa um caractere coringa.
Vale destacar que não é apenas o primeiro caractere que pode ser determinado para uma consulta. Veja o comando da Figura 3, no qual desejamos obter como resultado todos os nomes de produtos cujo caractere inicial seja C e que contenha o caractere D em qualquer posição na palavra.
O resultado é apresentado na Figura 4.
Também podemos obter como resultado as palavras que contenham um determinado caractere em qualquer posição. O comando descrito na Figura 5 retornará como resultado todos os produtos contenham o caractere C em qualquer posição.
O resultado é apresentado na Figura 6.
Além destes tipos de consulta descritos, o operador LIKE também permite consultar nomes de produtos que contenham uma determinada sílaba. Por exemplo, para realizar uma consulta obtendo como resultado os nomes dos produtos que contenham a sílaba 'or', basta executarem a instrução da Figura 7.
Com essa instrução, teremos os resultados da Figura 8.
Podemos restringir ainda mais esta consulta determinando não apenas uma sílaba que deve estar presente nos nomes dos produtos, mas também outra que deve estar presente no tipo de produto. Vejamos o comando descrito na Figura 9, no qual desejamos obter como resultado da consulta os produtos cujos nomes possuam a sílaba 'or' e os tipos que possuam a sílaba 'ti'.
Com essa instrução, teremos os resultados da Figura 10.
Com isso, podemos concluir que o operador LIKE em conjunto da cláusula WHERE é muito útil quando queremos realizar filtros diversos em consultas.
WHERE com NOT LIKE
Os operadores NOT LIKE são usados de forma oposta ao operador LIKE. Com eles obtemos o resultado de uma consulta os nomes e tipos de produtos que não possuem tais caracteres ou sílabas determinadas neste filtro.
Para ficar clara a diferença entre os operadores, usaremos os mesmos exemplos que usamos acima, mas agora a fim de explicar a finalidade dos operadores NOT LIKE, como mostra a Figura 11.
Com essa instrução, teremos os resultados da Figura 12.
Assim como o operador LIKE, o NOT LIKE também permite que mais de um caractere seja usado para uma consulta. Veja o comando descrito na Figura 13, no qual desejamos obter como resultado todos os nomes de produtos cujo caractere inicial não seja C e que não contenha o caractere D em qualquer outra posição da palavra.
O resultado pode ser visto na Figura 14.
Também podemos obter como resultado as palavras que não contenham um determinado caractere em qualquer posição. O comando descrito na Figura 15 retornará como resultado todos os produtos cujos nomes não contenham o caractere E em qualquer posição. O resultado pode ser visto na Figura 16.
Como feito anteriormente, com o operador NOT LIKE podemos restringir ainda mais nossa consulta, determinando uma sílaba que não deve estar presente no nome dos produtos e também uma sílaba que não deve estar presente no tipo do produto. O comando da Figura 17 nos permite obter como resultado (Figura 18) os produtos cujos nomes não possuem a sílaba 'or' e os tipos que não possuem a sílaba 'ti'.
Assim terminamos nossos exemplos com o uso dos operadores LIKE e NOT LIKE. Fica a dica para que treinem outros exemplos com o uso destes operadores em conjunto com a cláusula WHERE.