MySQL Caracteres curinga: Curtir, Não Curtir, Escape, ( % ), ( _ )
⚡ Resumo Inteligente
MySQL Os caracteres curinga possibilitam a busca baseada em padrões, combinando os operadores LIKE e NOT LIKE com caracteres especiais. Isso explica os caracteres curinga de porcentagem e sublinhado, a palavra-chave ESCAPE, consultas práticas no banco de dados myflixdb e considerações de desempenho.
Quais são MySQL Curingas?
MySQL Curingas Os caracteres curinga são caracteres especiais que ajudam a pesquisar dados que correspondam a um padrão complexo em vez de um valor exato. Eles são sempre usados em conjunto com o operador de comparação LIKE ou com o operador de comparação NOT LIKE.
MySQL Suporta dois caracteres curinga, e cada um responde a uma pergunta diferente sobre seus dados.
| Wildcard | Significado | Padrão de exemplo | Partidas |
|---|---|---|---|
| % | Zero (0) ou mais caracteres | '%código%' | Code Nome Black, Davinci Code |
| _ | Exatamente um caractere | '200_' | 2005, 2008 |
Agora que os dois personagens foram definidos, a próxima seção explica por que vale a pena aprendê-los.
Por que usar curingas em MySQL?
Se você está familiarizado com SQL, pode pensar que já consegue pesquisar qualquer dado complexo usando SELECT e a cláusula WHERE. Então, por que usar curingas?
Antes de respondermos a essa pergunta, vejamos um exemplo. Suponha que o departamento de marketing da videoteca Myflix tenha realizado promoções na cidade de Texas e queira saber o número de membros cadastrados no Texas. Você pode usar a seguinte instrução SELECT juntamente com a cláusula WHERE para obter as informações desejadas.
SELECT * FROM members WHERE postal_address = 'Austin, TX' OR postal_address = 'Dallas, TX' OR postal_address = 'Iola, TX' OR postal_address = 'Houston, TX';
Como você pode ver na consulta acima, o “Cláusula WHEREA consulta torna-se longa e frágil: cada nova cidade precisa ser adicionada manualmente, e um único endereço com erro ortográfico é silenciosamente excluído. O uso de curingas simplifica a consulta, pois um único padrão abrange todas as cidades do estado.
SELECT * FROM members WHERE postal_address LIKE '%TX';
Resumindo, os caracteres curinga permitem que você incorpore recursos de pesquisa avançados em aplicativos orientados a dados com muito menos SQL. A próxima seção detalha cada caractere curinga.
Tipos de MySQL Curingas
% – O caractere curinga percentual
O caractere de porcentagem (%) é usado para especificar um padrão de zero (0) ou mais caracteres. Possui a seguinte sintaxe básica.
SELECT * FROM table_name WHERE fieldname LIKE 'xxx%';
AQUI:
- "Instrução SELECT"" é o comando SQL SELECT padrão.
- “WHERE” é a palavra-chave usada para aplicar o filtro.
- “LIKE” é o operador de comparação usado em conjunto com caracteres curinga.
- 'xxx' é qualquer padrão especificado, como um único caractere ou mais, e “%” corresponde a qualquer número de caracteres começando de zero (0).
Para compreender plenamente a afirmação acima, vejamos um exemplo prático. Suponha que queiramos obter todos os filmes que contenham a palavra "código" no título. Usaríamos o caractere curinga de porcentagem em ambos os lados da palavra "código" para realizar uma correspondência de padrão em qualquer lugar do título.
SELECT * FROM movies WHERE title LIKE '%code%';
Executando o script acima em MySQL Workbench A consulta ao banco de dados myflixdb nos fornece os resultados mostrados abaixo.
| id_do_filme | título | diretor | ano_de lançamento | Categoria ID |
|---|---|---|---|---|
| 4 | Code Nome Black | Edgar Jimz | 2010 | NULL |
| 7 | Da Vinci Code | NULL | NULL | 6 |
Observe que a palavra-chave de pesquisa “code” é retornada independentemente de aparecer no início ou no final do título. Isso ocorre porque o padrão permite qualquer número de caracteres antes de “code” e qualquer número de caracteres depois dela.
Vamos agora modificar o script para que o caractere curinga de porcentagem apareça apenas no início dos critérios de pesquisa.
SELECT * FROM movies WHERE title LIKE '%code';
Executando o script acima em MySQL A análise do Workbench com o banco de dados myflixdb nos fornece os resultados mostrados abaixo.
| id_do_filme | título | diretor | ano_de lançamento | Categoria ID |
|---|---|---|---|---|
| 7 | Da Vinci Code | NULL | NULL | 6 |
Observe que apenas um registro foi retornado. O padrão corresponde a qualquer número de caracteres no início do título, mas exige que o título... final com “código”.
Vamos agora mover o caractere curinga de porcentagem para o final do padrão. O script modificado é mostrado abaixo.
SELECT * FROM movies WHERE title LIKE 'code%';
Executando o script acima em MySQL A análise do Workbench com o banco de dados myflixdb nos fornece os resultados mostrados abaixo.
| id_do_filme | título | diretor | ano_de lançamento | Categoria ID |
|---|---|---|---|---|
| 4 | Code Nome Black | Edgar Jimz | 2010 | NULL |
Apenas um registro é retornado novamente, porque esse padrão corresponde a todos os títulos que começa com “código” seguido por qualquer número de caracteres. A posição do símbolo % determina, portanto, o significado da pesquisa.
💡 Dica: Um padrão como 'code%' ainda pode usar um índice na coluna de título, enquanto '%code%' não pode. Um caractere curinga de porcentagem inicial força MySQL Para examinar todas as linhas, mantenha o caractere curinga à direita sempre que a pesquisa permitir.
_ – O caractere curinga de sublinhado
O curinga sublinhado é usado para corresponder exatamente a um caractereSuponha que queiramos encontrar todos os filmes lançados no ano 200x, onde x é exatamente um caractere que pode assumir qualquer valor. O script abaixo seleciona todos os filmes lançados no ano “200x”.
SELECT * FROM movies WHERE year_released LIKE '200_';
Executando o script acima em MySQL A análise do Workbench com o banco de dados myflixdb nos fornece os resultados mostrados abaixo.
| id_do_filme | título | diretor | ano_de lançamento | Categoria ID |
|---|---|---|---|---|
| 2 | Esquecendo Sarah Marshal | Nicholas Stoller | 2008 | 2 |
| 9 | Honey mooners | João Shultz | 2005 | 8 |
Observe que apenas os filmes cujo valor de `year_released` seja 200 seguido por um único caractere serão retornados. Ao contrário do caractere curinga de porcentagem, o sublinhado reserva um espaço para apenas um caractere.
DIFERENTE de curingas
O operador lógico NOT pode ser usado em conjunto com curingas para retornar as linhas que... não corresponder ao padrão especificado.
Suponha que queiramos os filmes que não foram lançados nos anos 200x. Combinamos o operador lógico NÃO com o caractere curinga sublinhado, como mostrado abaixo.
SELECT * FROM movies WHERE year_released NOT LIKE '200_';
| id_do_filme | título | diretor | ano_de lançamento | Categoria ID |
|---|---|---|---|---|
| 1 | Piratas do Caribe 4 | Rob Marshall | 2011 | 1 |
| 4 | Code Nome Black | Edgar Jimz | 2010 | NULL |
| 8 | Mundo Subterrâneo -Awakenimprimir | Michael Eal | 2012 | 6 |
Somente os filmes que não seguem o padrão 200x são retornados, porque o operador NOT inverte o resultado da comparação com curinga. Observe que as linhas que contêm um NULL Os valores nunca são retornados por LIKE ou NOT LIKE, já que NULL é desconhecido e não significa desigual.
Palavra-chave ESCAPE
A palavra-chave ESCAPE é usada para caracteres de correspondência de padrões de escape tais como a percentagem (%) e o sublinhado (_) quando fazem parte dos próprios dados.
Suponha que queiramos procurar a sequência literal “67%”. Declaramos um caractere de escape e o colocamos imediatamente antes do caractere que deve ser lido como dado.
LIKE '67#%%' ESCAPE '#';
Se quisermos encontrar o filme “67% Guilty”, podemos usar o roteiro mostrado abaixo.
SELECT * FROM movies WHERE title LIKE '67#%%' ESCAPE '#';
Observe o “%%” duplo na cláusula LIKE. O primeiro é precedido pelo caractere de escape (#) e, portanto, é tratado como parte da string que está sendo pesquisada. O segundo mantém seu significado de curinga e corresponde a qualquer número de caracteres que o seguem.
Qualquer caractere pode servir como caractere de escape, portanto, a mesma consulta também funciona com o sinal de igual.
SELECT * FROM movies WHERE title LIKE '67=%%' ESCAPE '=';
Os curingas abrangem muito bem padrões simples, mas algumas buscas exigem regras mais expressivas. A comparação abaixo mostra onde reside o limite.
MySQL Caracteres curinga vs. expressões regulares: qual você deve usar?
MySQL Suporta apenas dois caracteres curinga. Listas de caracteres como [ac], que alguns outros mecanismos de banco de dados aceitam dentro de LIKE, não são suportadas. Quando uma pesquisa requer intervalos de caracteres, alternância ou ancoragem, o Operador REGEXP é a escolha correta.
| Critério | CURTIR com curingas | REGEXP |
|---|---|---|
| Potência do padrão | Apenas dois símbolos: % e _ | Classes de caracteres, intervalos, alternância, repetição |
| Uso típico | Pesquisas por prefixo, sufixo ou "contém" | Validação, correspondência complexa, múltiplas alternativas |
| Utilização do índice | Possível quando o padrão não começa com % | Nunca usa um índice |
| legibilidade | Simples para iniciantes | Curva de aprendizado mais acentuada |
Como regra geral, use LIKE primeiro: é mais fácil de ler e é o único dos dois que pode se beneficiar de um índice. Recorra a REGEXP quando um único padrão precisar expressar várias alternativas, por exemplo, para encontrar todos os títulos que começam com um dígito. Ambos os operadores são comparações somente leitura, portanto, nenhum deles altera as linhas retornadas. INSIRA or ATUALIZAÇÃO declarações; elas filtram apenas o que a cláusula WHERE seleciona.

