1

我正在尝试从收到大量垃圾邮件的表中删除记录。因此,我们的想法是删除所有没有来自 hotmail、gmail 或 yahoo 的电子邮件的记录。但我的 sql 看起来像是在返回一些 hotmail 记录:

SELECT *
FROM `users`
WHERE email NOT LIKE '*hotmail.com*'
AND email NOT LIKE '*gmail.com*'
AND email NOT LIKE '*ymail.com*'

应用OR条件返回相同的结果。你能指引正确的方向吗?

4

3 回答 3

2

查询应如下所示

SELECT *
FROM `users`
WHERE email NOT LIKE '%hotmail.com%'
AND email NOT LIKE '%gmail.com%'
AND email NOT LIKE '%ymail.com%'

你必须替换*%

如果 SQL LIKE 子句与 % 字符一起使用,那么它将像 Unix 中的元字符 (*) 一样工作,同时在命令提示符下列出所有文件或目录。

这是关于 MySQL 中 LIKE 的文档

于 2012-11-02T12:37:33.200 回答
2
SELECT  *
FROM    users
WHERE   email NOT RLIKE '\\@(hotmail|gmail|ymail)\\.com$'
于 2012-11-02T12:39:27.850 回答
0

您的查询还会返回 gmail 和 ymail

在 mysql 中你必须使用 % 而不是 *

所以只需替换它,一切都会好起来的。

于 2012-11-02T12:42:15.737 回答