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%';
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%';
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%';
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;
Assista a um vídeo onde detalho o uso das claúsulas LIKE e NOT LIKE no MySQL:
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.
Eu é que agradeço Cícero!!!!
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.
Obrigado Raí! Fico muito feliz em poder ajudar!
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?
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’.
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.
Adriano, creio que o operador NOT IN possa resolver seu problema. Segue um vídeo sobre o assunto:
https://www.youtube.com/watch?v=7M9-8yEwIGw
O vídeo trata de SQL Server, mas a sintaxe é a mesma para o MySQL. Em breve vou atualizar a lista de MySQL postando um artigo sobre os operadores IN e NOT IN também.
Olá a todos, preciso de pesquisar uma frase de 20 palavras ou mais (até 300) num campo tipo texto, posso fazer isso com like, algum exemplo simples por favor