Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Equal(=) Vs 'Like'

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?

1 resposta
solução!

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:

  • Maria Silva
  • Maria de Souza

O % é um caractere coringa que representa 0, 1 ou mais caracteres quaisquer.

SELECT  nome
FROM clientes
WHERE nome LIKE "%Silva"

Retorna:

  • Maria Silva

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:

  • Silvana Almeida

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:

  • Maria Silva
  • Silvana Almeida

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:

  • José de Souza
  • José Souza
  • Maria de Souza
  • Souza

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:

  • José de Souza
  • José Souza
  • Maria de Souza

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:

  • José de Souza
  • José Souza