..


Links Patrocinados

Expressões regulares no MySQL consulta

Artigo escrito por Max Bossi

O motor interno do MySQL tem nativas - além de os operadores comuns de desigualdade, igualdade e semelhança (LIKE) - um operador muito útil: operador REGEXP.
Como o próprio nome sugere, o operador REGEXP aproveita o poder das expressões regulares para realizar pesquisas complexas em nosso banco de dados MySQL. A sintaxe é simples:






 SELECIONE field_name







 FROM table_name







 ONDE field_name expressão REGEXP;

 
Vamos seguir uma tabela de resumo simples dos personagens principais ea sintaxe especial usado na expressão de comparação:

^ Início da cadeia
$ Final da cadeia
. Qualquer caractere
[...] Qualquer um dos caracteres entre parênteses
[^...] Qualquer caractere, exceto aqueles em colchetes
| Seqüências separadas de caracteres ou suas alternativas
* Zero ou mais repetições do caractere anterior ou a cadeia
+ Uma ou mais repetições do caractere anterior ou a cadeia
{N} "N" caráter ou a repetição da seqüência anterior
{Min, max} Repete o caractere anterior ou string para um número de vezes entre um mínimo e um máximo

Fazemos alguns exemplos práticos que, como sempre, vale mais que mil palavras ...
Por simplicidade vamos nos referir a um banco de dados de calendário hipotética contendo os nomes dos nossos amigos.

1) Nós encontramos todos os nomes que começam com "m"

 



 SELECT nome FROM agenda WHERE nome REGEXP '^ m';

 
Nossa consulta irá retornar, por exemplo:
  • M ara
  • M arco
  • M ário
  • Ilena M
2) Nós encontramos todos os nomes que terminam com "ou"
 



 SELECT nome FROM agenda WHERE nome REGEXP 'ou $';

 
Nossa consulta irá retornar, por exemplo:
  • Ou Philip
  • Luzes ou
  • Marc e
  • Mares ou
  • Paulo ou
3) Nós encontramos todos os nomes que começam com "m" e eventualmente "ou"
 



 SELECT nome FROM agenda WHERE nome REGEXP '^ m + o $';

 
Nossa consulta irá retornar, por exemplo:
  • M arco ou
  • M ari ou
4) Nós encontramos todos os nomes que contêm a letra "r"
 



 SELECT nome FROM agenda WHERE nome REGEXP 'r';

 
Nossa consulta irá retornar, por exemplo:
  • R cla
  • Mas r
  • Mas r co
  • Mas eu r
5) Nós encontramos todos os nomes que contêm grupos de letras ", mas" ou "I"
 



 SELECT nome FROM agenda WHERE nome REGEXP 'ma | ra ";

 
Nossa consulta irá retornar, por exemplo:
  • Eu luc
  • Ra, mas
  • Mas RCO
  • Mas eu r
6) Nós encontramos todos os nomes que não contêm as letras "m" e "a"
 



 SELECT nome FROM agenda WHERE nome REGEXP '[^ ma]';

 
Nossa consulta irá retornar, por exemplo:
  • Philip
  • Lucio
Deixo ao leitor a testar ainda mais o operador REGEXP potencial, já que as áreas possíveis de uso são tantas e é difícil resumir em um pequeno artigo como este pretende ser.

Na mesma categoria ...
E-Learning
MS Access (Avançado) MS Access (Avançado)
Saiba como criar e gerenciar bancos de dados com rapidez e facilidade. A partir de 29 €.
MySQL (Curso) MySQL (Curso)
Gestão de banco de dados open-source. A partir de 39 €.
SQL e Banco de Dados (Curso) SQL e Banco de Dados (Curso)
Criar e gerenciar bancos de dados relacionais. A partir de 39 €.
Links Patrocinados