MySQL – LIKE e NOT LIKE – Padrões de caracteres em consultas

MySQL – LIKE e NOT LIKE

Quando realizamos uma consulta no MySQL, utilizamos a cláusula WHERE para realizar um filtro dos registros a retornar. Porém, com o WHERE, só podemos aplicar filtros de correpondência exata de palavras. E se precisarmos aplicar um filtro que verifique palavras de forma parcial, como palavras que iniciem ou terminem com determinados caracteres, ou que possuam sequências de caracteres específicas? Neste caso, usamos a cláusula LIKE:

  • A cláusula LIKE determina se uma cadeia de caracteres (string) corresponde a um padrão especificado. Um padrão pode incluir caracteres normais e curingas.
  • NOT LIKE inverte a comparação, verificando se a cadeia de caracteres NÃO corresponde ao padrão especificado.

Padrões específicos (metacaracteres)

Usamos diversos conjuntos de caracteres para especificar os padrões a serem filtrados pelas cláusulas LIKE e NOT LIKE. Por exemplo:

‘%’  — Qualquer cadeia de 0 ou mais caracteres
‘_’   — Sublinhado: qualquer caracter único

Exemplos:

1. Selecionar todos os registros da tabela tbl_livro cujo nome comece com a letra F:

SELECT * FROM tbl_Livro
WHERE Nome_Livro LIKE 'F%'; 

Cláusula SQL LIKE no MySQL

2. Selecionar todos os registros da tabela tbl_livro cujo nome não começa com a letra S:

SELECT * FROM tbl_Livro
WHERE Nome_Livro NOT LIKE 'S%'; 

Cláusula SQL LIKE no MySQL

3. Selecionar os nomes de livros da tabela tbl_livro cujo nome se inicie com uma letra qualquer e a segunda letra seja a letra i:

SELECT Nome_Livro
FROM tbl_Livro
WHERE Nome_Livro LIKE '_i%';

Cláusula SQL LIKE no MySQL

4. Selecionar os nomes dos livros e seus respectivos preços, na tabela de livros, cujo nome não comece com a letra F e que custem mais de R$ 60,00:

SELECT Nome_Livro AS Livro, Preco_Livro AS Valor
FROM tbl_livro
WHERE Nome_Livro NOT LIKE 'F%'
AND Preco_Livro > 60.00;

Cláusula SQL LIKE no MySQL

Assista a um vídeo onde detalho o uso das claúsulas LIKE e NOT LIKE no MySQL:

 

Sobre Fábio dos Reis (1195 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 30 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Ciência e Tecnologia em geral, adora Viagens e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.

8 Comentários em MySQL – LIKE e NOT LIKE – Padrões de caracteres em consultas

  1. Cicero F.Filho // 04/06/2014 em 13:11 // Responder

    Gostaria apenas de agradecer, ao Sr. Fábio dos Reis, pela grande ajuda que tem prestado não só a mim mas também a muitos outros que querem ingressar nessa carreira de TI, com sua forma simples e clara de transmitir as informações detalhadas, que Deus ilumine sempre seus caminhos, abraço de coração.

  2. Deixo aqui os meus profundos agradecimentos ao trabalho de vcs da Bóson Treinamentos. Faço Análise de Sistemas na Uninove e desde que descobri a Bóson aprendi muitas coisas e hoje entendo bem todo esse universo que é a área de TI.

  3. E se eu precisasse consultar o conteúdo onde o caractere que quero buscar seja %
    Exemplo conteúdo do campo Nome_Livro: “Use 100% do seu cérebro. ”
    Eu gostaria de encontrar todos os livros que o titulo do livro contenha % (percentual)

    SELECT * FROM tbl_Livro WHERE Nome_Livro LIKE ‘%’;

    Como faria?

    • Ferreira Eraldo // 23/07/2022 em 12:07 // Responder

      Sua pergunta foge do contexto do artigo acima, mesmo assim vou deixar um exemplo aqui:
      MySQL [jrt_v2]> select * from conteudos where texto_conteudo like ‘%\%%’ limit 10;
      Resultado: …cada um ficou com 50% do imóvel…
      Basta utilizar uma barra invertida antes do caracter que queira proteger como conteúdo da cláusula where, assim, como para outras situações ‘d\’água’.

  4. Olá amigo pensa numa situação; Preciso precisar todos nomes de campo e ao mesmo quero negar um nome exite uma forma? com mysql e php
    tabelacliente campo (nome)
    Maria
    José
    João
    -Marcos(exemplo; quero que o Marcos não apareça na pesquisa quando eu fizer o select.

Escreva um comentário

Seu e-mail não será divulgado


*