Ao ver o código escrito pelo instrutor reparei que ao invés de '=' ele usou like, ao contrário de mim. Quando usei '=', o terminal retornou "empty set". Por que? Quais são as diferenças entre '=' e 'like', quando devo usa-las?
Ao ver o código escrito pelo instrutor reparei que ao invés de '=' ele usou like, ao contrário de mim. Quando usei '=', o terminal retornou "empty set". Por que? Quais são as diferenças entre '=' e 'like', quando devo usa-las?
Tiago, o operador LIKE
serve para fazer uma busca não exata.
Exemplo:
clientes
nome
Maria Silva
Maria de Souza
José de Souza
José Souza
Silvana Almeida
Souza
SELECT nome
FROM clientes
WHERE nome = "Maria"
Não retorna nada, pois não há nenhum registro na coluna nome
onde o valor seja exatamente "Maria".
SELECT nome
FROM clientes
WHERE nome LIKE "Maria%"
Retorna:
O % é um caractere coringa que representa 0, 1 ou mais caracteres quaisquer.
SELECT nome
FROM clientes
WHERE nome LIKE "%Silva"
Retorna:
Pois é o único registro que possui caracteres antes do "Silva". Se quiser os registros que possuam caracteres após "Silva", então:
SELECT nome
FROM clientes
WHERE nome LIKE "Silva%"
Retorna:
Você também pode utilizar o %
antes e depois para indicar que deseja os registros que contenham caracteres antes e depois do "Silva":
SELECT nome
FROM clientes
WHERE nome LIKE "%Silva%"
Retorna:
Também existe o caractere "_" (underscore), que representa um único caractere.
SELECT nome
FROM clientes
WHERE nome LIKE "%Souza"
Retorna todo "Souza" que contenha 0, 1, ou mais caracteres antes dele:
Já:
SELECT nome
FROM clientes
WHERE nome LIKE "%_Souza"
Retorna todo "Souza" que contenha exatamente um caractere antes dele, e antes deste 1 caractere obrigatório, pode conter quaisquer outros caracteres:
Como o "Souza" não possui um caractere obrigatório antes, ele fica de fora desse SELECT
.
Você também pode utilizar os caracteres coringas no meio da sua palavra buscada:
SELECT nome
FROM clientes
WHERE nome LIKE "José%Souza"
Retorna: