Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marcelo Cajaíba

Buscar no mysql telefone por expressão regular

Recommended Posts

Olá Colegas eu tenho um banco de dados com telefones que estão assim (00) 0000-0000

Eu queria fazer uma busca no mysql onde eu colocaria a variável PHP $fone=0000000000; (somente numero sem caracteres)

e consegui buscar o resultado. eu tentei com and celular REGEXP '[0-9]*($celular)' sem sucesso !

Alguém pode me ajudar por favor ?

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

A solução correta do seu problema, seria normalizar os dados.

Máscaras nunca devem ser salvas no banco de dados. Isso inclui:
- Telefone;
- CPF;
- CNPJ;
- CEP;
- Qualquer cadeia de valor, alfanumérica, que possui caracteres divisores.

Qualquer outra solução, será realizada ao custo de performance. Como o MySQL não possui o suporte completo para expressões regulares, poderia utilizar uma biblioteca terceira:
https://github.com/hholzgra/mysql-udf-regexp

Com REGEXP_REPLACE você poderia filtrar:

"SELECT * FROM table WHERE REGEXP_REPLACE(telefone , '\D' , '') = 'telefone'"

Não consigo pensar em nenhuma outra solução que não seja criar uma função ou encher o código de gambiarra com preenchimento ou replace de caracteres individuais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.