Tutorial de curingas do MySQL: Like, NOT Like, Escape, (%), (_)

O que são caracteres curinga do MySQL?

Caracteres curinga do MySQL são caracteres que ajudam a pesquisar dados que correspondem a critérios complexos. Os curingas são usados ​​em conjunto com o operador de comparação LIKE ou com o operador de comparação NOT LIKE.

Por que usar WildCards?

Se você está familiarizado com o uso do SQL, pode pensar que pode pesquisar quaisquer dados complexos usando as cláusulas SELECT e 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 realize promoções de marketing na cidade do Texas e gostaria de obter algum feedback sobre o número de membros

registrado no Texas, você pode usar a seguinte instrução SELECT junto 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_adress = Houston ,TX';

Como você pode ver na consulta acima, a 'cláusula WHERE' se torna complexa. Usar curingas, no entanto, simplifica a consulta, pois podemos usar algo simples como o script mostrado abaixo.

SELECT * FROM members WHERE postal_address like '% TX';

Resumindo, os curingas nos permitem desenvolver mecanismos de pesquisa poderosos em nossos aplicativos orientados por dados.

Tipos de curingas

% a porcentagem

% o caractere de porcentagem é usado para especificar um padrão de zero (0) ou mais caracteres . Possui a seguinte sintaxe básica.

SELECT statements... WHERE fieldname LIKE 'xxx%';

AQUI

  • 'Instrução SELECT ...' é o comando SQL SELECT padrão.
  • 'ONDE' é a palavra-chave usada para aplicar o filtro.
  • 'LIKE' é o operador de comparação usado em conjunto com curingas
  • 'xxx' é qualquer padrão inicial especificado, como um único caractere ou mais, e '%' corresponde a qualquer número de caracteres começando de zero (0).

Para apreciar totalmente a afirmação acima, vamos dar uma olhada em um exemplo prático

Suponha que desejamos obter todos os filmes que têm a palavra 'código' como parte do título, usaríamos o caractere curinga de porcentagem para realizar uma correspondência de padrão em ambos os lados da palavra 'código'. Abaixo está a instrução SQL que pode ser usada para alcançar os resultados desejados.

SELECT * FROM movies WHERE title LIKE '%code%';

Executar o script acima no ambiente de trabalho MySQL no myflixdb nos dá os resultados mostrados abaixo.

movie_idtítulodiretoryear_releasedCategoria ID
4Codinome PretoEdgar Jimz2010NULO
7Código da VinciNULONULO6

Observe que mesmo que a palavra-chave de pesquisa 'código' apareça no início ou no final do título, ela ainda será retornada em nosso conjunto de resultados. Isso ocorre porque nosso código inclui qualquer número de caracteres no início e, em seguida, corresponde ao padrão 'código' seguido por qualquer número de caracteres no final.

Agora, vamos modificar nosso script acima para incluir o caractere curinga de porcentagem apenas no início dos critérios de pesquisa.

SELECT * FROM movies WHERE title LIKE '%code';

Executar o script acima no ambiente de trabalho MySQL no myflixdb nos dá os resultados mostrados abaixo.

movie_idtítulodiretoryear_releasedCategoria ID
7Código da VinciNULONULO6

Observe que apenas um registro foi retornado do banco de dados. Isso ocorre porque nosso código corresponde a qualquer número de caracteres no início do título do filme e obtém apenas os registros que terminam com o padrão 'código'.

Agora, vamos deslocar o caractere curinga de porcentagem para o final do padrão especificado a ser correspondido. O script modificado é mostrado abaixo.

SELECT * FROM movies WHERE title LIKE 'code%';
Executar o script acima no ambiente de trabalho MySQL no myflixdb nos dá os resultados mostrados abaixo.

movie_idtítulodiretoryear_releasedCategoria ID
4Codinome PretoEdgar Jimz2010NULO

Observe que apenas um registro foi retornado do banco de dados. Isso ocorre porque nosso código corresponde a todos os títulos que começam com o padrão 'código' seguido por qualquer número de caracteres.

_ sublinhado curinga

O caractere curinga sublinhado é usado para corresponde exatamente a um caractere . Vamos supor que desejamos pesquisar todos os filmes que foram lançados nos anos 200x, onde x é exatamente um caractere que pode ter qualquer valor. Usaríamos o caractere curinga de sublinhado para fazer isso. O roteiro abaixo seleciona todos os filmes que foram lançados no ano '200x'

SELECT * FROM movies WHERE year_released LIKE '200_';

Executar o script acima no ambiente de trabalho MySQL no myflixdb nos dá os resultados mostrados abaixo.

movie_idtítulodiretoryear_releasedCategoria ID
2Esquecendo Sarah MarshalNicholas Stoller20082
9Honey moonersJohn shultz20058

Observe que apenas filmes que têm 200 seguidores de qualquer caractere no campo ano lançado foram retornados em nosso conjunto de resultados. Isso ocorre porque o caractere curinga de sublinhado correspondeu ao padrão 200 seguido por qualquer caractere único

Não parece

O operador NÃO lógico pode ser usado junto com os curingas para retornar linhas que não correspondem ao padrão especificado.

Suponha que queremos filmes que não foram lançados no ano 200x. Usaríamos o operador NOT lógico junto com o caractere curinga de sublinhado para obter nossos resultados. Abaixo está o script que faz isso.

SELECT * FROM movies WHERE year_released NOT LIKE '200_';

movie_idtítulodiretoryear_releasedCategoria ID
1Piratas do Caribe 4Rob Marshall20111
4Codinome PretoEdgar Jimz2010NULO
8Underworld-AwakeninhMichael Eal20126

Observe que apenas os filmes que não começam com 200 no ano de lançamento foram retornados em nosso conjunto de resultados. Isso ocorre porque usamos o operador NÃO lógico em nossa pesquisa de padrão curinga.

Palavra-chave de escape.

A palavra-chave ESCAPE é usada para caracteres de correspondência de padrão de escape como a porcentagem (%) e sublinhado (_) se eles fizerem parte dos dados.

Vamos supor que desejamos verificar a string '67% 'que podemos usar;

LIKE '67#%%' ESCAPE '#';

Se quisermos pesquisar o filme '67% Guilty ', podemos usar o script mostrado abaixo para fazer isso.

SELECT * FROM movies WHERE title LIKE '67#%%' ESCAPE '#';

Observe o duplo ' % % 'na cláusula LIKE, o primeiro em vermelho' % 'é tratado como parte da string a ser pesquisada. O outro é usado para corresponder a qualquer número de caracteres que se seguem.

A mesma consulta também funcionará se usarmos algo como

SELECT * FROM movies WHERE title LIKE '67=%%' ESCAPE '=';

Resumo

  • Ferramentas poderosas como & Wildcards que ajudam a pesquisar dados que correspondem a padrões complexos.
  • Existem vários caracteres curinga que incluem a porcentagem, sublinhado e charlist (não compatível com MySQL), entre outros
  • O curinga de porcentagem é usado para corresponder a qualquer número de caracteres começando de zero (0) e mais.
  • O caractere curinga sublinhado é usado para corresponder exatamente a um caractere.