在MySQL中查找具有%40的同一个表中的电子邮件

时间:2013-09-17 12:34:18

标签: mysql

我有一个包含两列的表 - id,email

我可以运行哪些查询来仅显示包含%40的单个电子邮件?

e.g。我的桌子是

id  email
-------------
1   stevemartin140%40gmail.com

2   stevemartin141%40gmail.com

3   stevemartin140@gmail.com

4   stevemartin141@gmail.com

5   stevemartin148%40gmail.com

6   andymartin%40ymail.com

结果将是:

id  email
-------------
5   stevemartin148%40gmail.com

6   andymartin%40ymail.com

我想找出&用@

替换这些电子邮件

所以我的最终输出将是:

id  email
-------------
1   stevemartin140%40gmail.com

2   stevemartin141%40gmail.com

3   stevemartin140@gmail.com

4   stevemartin141@gmail.com

5   stevemartin148@gmail.com

6   andymartin@ymail.com

提前致谢

3 个答案:

答案 0 :(得分:3)

如果你想替换它们,那么:

UPDATE t SET email=REPLACE(email, '%40', '@')

-in MySQL。

答案 1 :(得分:0)

你应该在你的where条件中使用like '%\%40%'来逃避通配符,如下所示:

select * from t1 where email like '%\%40%';

这是SqlFiddle

答案 2 :(得分:0)

也许不是必须表现的,而是找到重复......

SELECT * FROM table GROUP BY REPLACE(email, '%40', '@') HAVING COUNT(*) < 2 AND email LIKE '%\%40%';

符合MySQL标准

http://www.sqlfiddle.com/#!2/6808c/3/0