Segunda-feira, 09 de junho de 2003 às 01h59

Utilizando a função REGEXP / RLIKE do MySQL

Faltam -1 dias! Inscreva-se agora! O maior encontro de profissionais web da américa latina.

Em primeiro lugar, gostaria de agradecer à equipe iMasters, a confiança em meu trabalho e pelo espaço dado à esta coluna de MySQL. Espero corresponder à confiança e, principalmente, agradar ao grande público desse site.

O MySQL é um gerenciador de banco de dados relacionais moderno, rápido, poderoso e, vale a pena lembrar, gratuito. A comunidade que desenvolve o MySQL tem despendido muitos esforços, nesses últimos anos, para torná-lo cada vez melhor e com mais funcionalidades. Fruto desse esforço, temos hoje vários recursos que vão, desde novas funções e recursos até a interfaces gráficas extremamente fáceis de usar, como por exemplo o MySQL Front.

Nesta primeira coluna, irei abordar a função REGEXP ou RLIKE do MySQL. Muitos usuários do MySQL utilizam a função LIKE, que é mais conhecida. Só que a função REGEXP possui mais recursos, tais como verificar se uma string contém um determinado caracter ou se contém uma determinada seqüência. O resultado da busca retornará ‘1’ para verdadeiro e ‘0’ para falso. A sintaxe genérica do REGEXP é:

string REGEXP string_de_busca

Veja, agora, alguns exemplos de utilização da função REGEXP:

SELECT ‘Marcus Batista Ethur’ REGEXP ‘^M’;

No exemplo acima, o ‘ ^ ’ é o responsável por delimitar a busca no início da string. Note que o ‘1’ é exibido, porque o registro existe.

É possível utilizar vários caracteres especiais nas strings de busca do REGEXP, veja abaixo alguns exemplos:

- ^ – faz a busca no início da string;

- $ – faz a busca no fim da string;

- . – procura qualquer caractere;

- ( ) – delimita uma seqüência de caracteres para busca;

- {} – delimita o número de caracteres para busca. Aceita duas sintaxes: {n} ou {n, m}, em que {n} procura uma quantidade específica de caracteres e {n, m} já o {n} procura uma quantidade específica de caracteres e {n, m} procura, no mínimo, n e, no máximo, m caracteres. Lembrando que, nesse caso, o m tem que ser maior que o n.

- [ ] – os colchetes servem para delimitarmos os tipos de caracteres que vão ser buscados. Por exemplo, [a-z] procura somente caracteres alfabéticos, enquanto que [0-9] procura somente caracteres numéricos. Nesse caso, ainda é possível utilizar o caracter ^ para negar a busca. Um exemplo, nesse caso, seria [^a-z] que procurará caracteres que não sejam alfabéticos.

Futuramente, nesta coluna, haverá outros exemplos de caracteres especiais para uso em buscas do REGEXP.

Veja agora outros dois casos de utilização do REGEXP:

SELECT ‘Marcus Batista Ethur’ REGEXP ‘^Mar....Bat.....Eth..$’;

SELECT ‘Marcus Batista Ethur’ REGEXP ‘^Ma..us$;

Note que, no primeiro caso, a busca retorna o valor 1 – para verdadeiro, no caso, um registro existente; enquanto que a segunda consulta retorna o valor 0 – para falso, ou seja, o registro, conforme os parâmetros especificados, não existe. O sinal $ faz a busca até o final da string, enquanto que o . marca a existência de um determinado caracter, nesse caso também utilizado para mostrar o posicionamento correto das letras a seguir.

Espero que esse artigo tenha sido útil.

3 comentários

 Joao
09/08/2004 15h09

$ Variavel

Usando a $ nos comando sql + PHP, não poderá dar conflito, achando que o $ é uma variavel?

 José Cláudio Medeiros de Lima
29/08/2009 08h43

Não, pois estará entre aspas simples;
Não, pois $ é caractere que representa o final de uma string, e só $ no php daria erro;
Não, pois o php tá entendo que se trata de uma regex;

 Rafael Araujo
25/06/2006 17h16

mtu bom

finalmente intendi como funciona expressoes regulares e di quebra pra usa em uma query...
mtu bom :)

Cancelar resposta

Qual a sua opinião?

Faça login abaixo ou cadastre-se rapidamente.


2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.