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.

  • 🔍 Definição Essencial: Os caracteres curinga são caracteres de preenchimento que os comandos LIKE e NOT LIKE usam para corresponder a padrões de texto em vez de valores exatos.
  • 📊 Porcentagem de curinga: O símbolo % corresponde a zero ou mais caracteres, portanto '%code%' retorna todos os títulos de filmes que contêm a palavra "code".
  • 🔡 Coringa de sublinhado: O símbolo _ corresponde exatamente a um caractere, portanto '200_' retorna títulos lançados entre 2000 e 2009.
  • 🚫 Regra da Negação: A função NOT LIKE inverte a comparação e retorna todas as linhas que não correspondem ao padrão especificado.
  • 🛡️ Manejo de fuga: A palavra-chave ESCAPE marca um caractere literal % ou _ dentro da string de pesquisa para que seja tratado como dado.
  • Visão de desempenho: Um percentual inicial bloqueia o uso do índice e força uma varredura completa da tabela, portanto, ancore os padrões à esquerda sempre que possível.
  • 🧩 Seleção de método: O operador LIKE abrange a correspondência simples de prefixos e sufixos, enquanto o operador REGEXP lida com classes de caracteres e alternância.

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.

Perguntas Frequentes

Não, não por padrão. O operador LIKE segue a ordenação da coluna e o padrão. MySQL As ordenações não diferenciam maiúsculas de minúsculas, portanto 'code%' também corresponde a “CodeAdicione a palavra-chave BINARY antes da coluna quando for necessária uma correspondência que diferencie maiúsculas de minúsculas.

Sim. Travas deslizantes portáteis MySQL A função `year_released LIKE '200_'` converte o valor em uma string antes de compará-lo, e é por isso que ela funciona. Essa conversão impede o uso de índices nessa coluna, portanto, em tabelas grandes, filtre com intervalos como `BETWEEN 2000 AND 2009`.

Não. A lista de caracteres entre colchetes aceita por alguns outros mecanismos não é válida dentro de um MySQL Padrão semelhante. Use o Operador REGEXP em vez disso, por exemplo, título REGEXP '^[ac]', para corresponder a um intervalo de caracteres iniciais.

Sim. Os assistentes de IA traduzem solicitações em linguagem natural em padrões LIKE que você pode executar em um cliente como... MySQL WorkbenchSempre revise o padrão gerado, pois mover um único símbolo % altera as linhas retornadas.

Os consultores de consulta de IA leem a saída do EXPLAIN e sinalizam padrões com curingas iniciais que ignoram índices. Em seguida, propõem alternativas como pesquisa de texto completo, um padrão de prefixo ou REGEXP, que você ainda precisa validar em relação aos seus próprios volumes de dados.

Resuma esta postagem com: