O que são caracteres curinga do MySQL?
Os 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 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 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%';
A execução do script acima no ambiente de trabalho MySQL no 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, 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';
A execução do script acima no ambiente de trabalho MySQL no 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".
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%';A execução do script acima no ambiente de trabalho MySQL no myflixdb nos dá 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 caractere curinga sublinhado é usado para corresponder 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 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 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 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 desejamos obter 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_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 NÃO lógico em nossa pesquisa de padrão curinga.
Palavra-chave de escape.
A palavra-chave ESCAPE é usada para escapar dos caracteres de correspondência de padrão , 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 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.