MySQL, Usando Expressões Regulares (+Dicas)

MySQL

Antes de mais nada, quem é esse tal de REGEX ?

Não passa de uma abreviação (do ingês) de Expressões Regulares, e …

E de forma breve, “Uma expressão regular, na Informática, define um padrão a ser usado para procurar ou substituir palavras ou grupos de palavras. É um meio preciso de se fazer buscas de determinadas porções de texto”, exemplo básico:

  • A coleção ou o conjunto de strings que possuem a letra inicial X ?

Bem didático, mais e as regras, as malditas regras, são muitas ? nahh, é tudo bem básico e as mais utilizadas você pode conferir aqui:

Wikipedia (pt-br) ou Google

Ao que interessa,

No MySQL utilizamos duas funções nativas que geram mesmo resultado (também me pergunto o porque de se criar vários nomes para a mesma coisa) são elas:

REGEXP e RLIKE

Eu prefiro o nome RLIKE mais não interessa, sendo assim segue uns exemplos do que se pode fazer com isso:

1 – Selecionar registros que começam com números de 0 à 9

select * from tabela where meu_campo RLIKE "^[0-9][~]*"

^[0-9] = Os colchetes indicam que haverá uma busca por um caracter, o acento circunflexo indica que será procurado no início da string e 0-9 indica que os números irão variar entre 0 e 9 (0,1,2,3 … 9)

[~]* = Isso aqui é legal, estou usando no meu TCC, indica qualquer coisa.

2 – Selecionar registros que terminam com números de 0 à 9

select * from tabela where meu_campo RLIKE "[0-9]$"

$ = Ao contrário do acento circunflexo o cifrão é utilizado para indicar que a busca será realizada no final da string.

3 – Selecionar registros que contenham arroba e ponto (e-mail)

Esse é bem simples, deve ser melhorado para consultas por e-mails válidos, você também pode pegar a lógica do post feito pelo Couto usado no PHP sobre isso, Clicando Aqui.

select * from tabela
where email REGEXP "^[A-Z 0-9][^@~]+[A-Z 0-9][@][A-Z 0-9][^@_~]*"

Lembrando que isso eu fiz aqui rapidinho para mostrar a lógica da coisa, e que deve da pra simplifica muito ali em cima e deve te um monte de bug, mais explicando o que eu fiz:

^[A-Z 0-9][^@~]+[A-Z 0-9][@] = Procura no início da string que comecem por números ou letras de A à Z seguidos de qualquer coisa menos arroba (pra não pegar e-maisl com várias arrobas), sendo que o ultimo caracter antes da arroba deverá ser números ou letras para não acontecer algo do tipo .@ ou _@, continuando temos apenas uma arroba.

[A-Z 0-9][^@_~]* = Finalizando a lógica temos a início com caracter ou número seguidos de qualquer coisa menos arroba e underline, (essa parte ta MUITO ruim)

4 – Finalizando

Esperando que isso tenha ajudado alguem a ter uma noção, caso contrário só lamento, e desculpem as falhas, foi escrito mediante uma arma apontada na cabeça.



Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s