MySQL Tutorial de curingas: Curtir, NÃO Curtir, Escape, (%), (_)
Quais são MySQL Curingas?
MySQL Curingas são caracteres que ajudam a pesquisar dados que correspondem a critérios complexos. 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 de SQL, pode pensar que pode pesquisar quaisquer dados complexos usando as cláusulas 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 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, o “Cláusula WHERE”torna-se complexo. 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. 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 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 MySQL bancada 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';
Executando o script acima em MySQL workbench em relação ao myflixdb nos dá 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%';
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_';
Executando o script acima em MySQL workbench em relação ao myflixdb nos dá 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 dados que correspondem a padrões complexos.
- Existem vários curingas que incluem porcentagem, sublinhado e lista de caracteres(não suportado por 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.