Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Prezados gostaria de saber se há alguma forma de realizar uma consulta onde traga todos os resultados de um campo que não possua a letra "@", tenho uma base de dados com muitos contatos e quero filtrar, porem tem muito lixo e gostaria de remover via SQL
desde ja Obrigado
com Oracle, uma sugestão fácil de filtragem é usando a instrução "minus"
Mota - banco MySQL
eu to com uma base de mais de 40 mil linhas e não da pra fazer isso na mão
com mysql, o equivalente do minus do oracle
exemplo para o seu caso..
SELECT id, email
FROM table1
WHERE ( id, '0' ) IN
( SELECT id, LOCATE( '@', email ) FROM table1 );
A função LOCATE() do MySQL, retorna a posição de um caracter ou string numa string.
http://dev.mysql.com/doc/refman/5.1/en/string-functions.html#function_locate
Dentro da condição "WHERE ( id, '0' )" se especificar '0' é porque não encontrou, o que indica que o row correspondente não possui o valor buscado.
No final, a consulta retornará todos que não possuem o valor do filtro, resultando no mesmo comando equivalente ao minus do Oracle.
http://forums.mysql.com/read.php?61,372768,375003#msg-375003
select * from taba where campo_do_email not like '%@%'
Estas funções variam de BD a BD, qual o BD em questão ?