Tutorial de curingas do MySQL: Curtir, NÃO Curtir, Escape, (%), (_)

O que são curingas do MySQL?

Curingas do MySQL são caracteres que ajudam a pesquisar dados correspondentes complex critério. Os caracteres curinga 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ê estiver familiarizado com o uso do SQL, você pode pensar que pode pesquisar qualquer complex dados usando a cláusula SELECT e WHERE. Então por que usar Wildcards?

Antes de respondermos a essa pergunta, vejamos um exemplo. Suponha que o departamento de marketing da videoteca Myflix realizou 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 o seguintewing 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, o “Cláusula WHERE”torna-se complex. No entanto, o uso de curingas 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 avançados em nossos aplicativos orientados a dados.

Tipos de curingas

% a porcentagem

% o caractere de porcentagem é usado para especificar um padrão de zero (0) ou mais caracteres. Tem o seguintewing 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 em zero (0).

Para apreciar plenamente a afirmação acima, vejamos um exemplo prático

Suponha que queiramos obter todos os filmes que possuem a palavra “código” como parte do título, usaríamos o 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 obter os resultados desejados.

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

Executando o script acima em Ambiente de trabalho MySQL contra o myflixdb nos dá os resultados mostrados abaixo.

movie_id title director year_released category_id
4 Code Name Black Edgar Jimz 2010 NULL
7 Davinci Code NULL NULL 6

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 depois corresponde ao padrão “código” seguido por qualquer número de caracteres no final.

Vamos agora modificar nosso script acima para incluir o curinga de porcentagem apenas no início dos critérios de pesquisa.

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

A execução do script acima no ambiente de trabalho MySQL no myflixdb nos fornece os resultados mostrados abaixo.

movie_id title director year_released category_id
7 Davinci Code NULL NULL 6

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 registros que terminam com o padrão “código”.

Vamos agora mudar o 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%';
A execução do script acima no ambiente de trabalho MySQL no myflixdb nos fornece os resultados mostrados abaixo.
movie_id title director year_released category_id
4 Code Name Black Edgar Jimz 2010 NULL

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 curinga sublinhado é usado para corresponder exatamente a um caractere. Suponhamos que queremos pesquisar todos os filmes que foram lançados nos anos 200x, onde x é exatamente um caractere que pode ter qualquer valor. Usaríamos o curinga de sublinhado para conseguir isso. O roteiro abaixo seleciona todos os filmes que foram lançados no ano “200x”

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

A execução do script acima no ambiente de trabalho MySQL no myflixdb nos fornece os resultados mostrados abaixo.

movie_id title director year_released category_id
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2
9 Honey mooners Jhon Shultz 2005 8

Observe que apenas os filmes com 200 seguidores de qualquer personagem no campo ano de lançamento foram retornados em nosso conjunto de resultados. Isso ocorre porque o curinga de sublinhado corresponde ao padrão 200 seguido por qualquer caractere único

Não parece

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

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

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

movie_id title director year_released category_id
1 Pirates of the Caribean 4 Rob Marshall 2011 1
4 Code Name Black Edgar Jimz 2010 NULL
8 Underworld-Awakeninh Michahel Eal 2012 6

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 lógico NOT 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 o sublinhado (_) se fizerem parte dos dados.

Suponhamos que queremos verificar a string “67%” que podemos usar;

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

Se quisermos pesquisar o filme “67% Guilty”, podemos usar o script 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 a seguir.

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

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

Resumo

  • Ferramentas poderosas de Like & Wildcards que ajudam a pesquisar correspondência de dados complex padrões.
  • Existem vários curingas que incluem porcentagem, sublinhado e charlist (não suportado pelo MySQL), entre outros
  • O curinga de porcentagem é usado para corresponder a qualquer número de caracteres começando de zero (0) e mais.
  • O curinga sublinhado é usado para corresponder exatamente a um caractere.