WHERE, CASE WHEN e Funções
Filtragem, operadores lógicos e funções de texto e data
WHERE é a cláusula de filtragem do SQL. Ela avalia condições linha por linha e retorna apenas as que satisfazem o critério. Suporta operadores de comparação (=, !=, <, >, <=, >=), lógicos (AND, OR, NOT), e especiais como LIKE, IN, BETWEEN e IS NULL.
LIKE permite busca por padrão de texto: % substitui zero ou mais caracteres, _ substitui exatamente um caractere. IN verifica pertencimento a um conjunto de valores. BETWEEN verifica intervalos (inclusivo em ambas as extremidades).
CASE WHEN é a estrutura condicional do SQL — funciona como if/else e pode ser usada em qualquer lugar que aceite uma expressão: SELECT, WHERE, ORDER BY, GROUP BY.
-- Filtragem básica
SELECT * FROM produtos
WHERE preco > 100 AND estoque > 0;
-- OR e NOT
SELECT * FROM clientes
WHERE cidade = 'São Paulo' OR cidade = 'Rio de Janeiro';
SELECT * FROM pedidos
WHERE NOT status = 'cancelado';
-- LIKE para padrões de texto
SELECT * FROM clientes
WHERE nome LIKE 'Ana%'; -- começa com "Ana"
SELECT * FROM emails
WHERE endereco LIKE '%@gmail.com'; -- termina com @gmail
SELECT * FROM codigos
WHERE codigo LIKE 'BR-___-XX'; -- _ = 1 caractere exato
-- IN — substitui múltiplos OR
SELECT * FROM pedidos
WHERE status IN ('pendente', 'processando', 'enviado');
-- BETWEEN — intervalo inclusivo
SELECT * FROM vendas
WHERE data BETWEEN '2024-01-01' AND '2024-12-31';
-- IS NULL / IS NOT NULL
SELECT * FROM clientes WHERE telefone IS NULL;
-- CASE WHEN
SELECT
nome,
salario,
CASE
WHEN salario >= 10000 THEN 'Sênior'
WHEN salario >= 5000 THEN 'Pleno'
ELSE 'Júnior'
END AS nivel
FROM funcionarios;Índices são criados em colunas usadas frequentemente no WHERE. LIKE com % no início (LIKE "%texto") não usa índice — evite quando possível.