我正在尝试从表中删除垃圾邮件的记录。因此,想法是删除所有没有来自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
条件会返回相同的结果。你能指导正确的方向吗?
答案 0 :(得分: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中的元字符(*),同时列出所有文件或 命令提示符下的目录。
Here's关于MySQL中的LIKE的文档
答案 1 :(得分:2)
SELECT *
FROM users
WHERE email NOT RLIKE '\\@(hotmail|gmail|ymail)\\.com$'
答案 2 :(得分:0)
您的查询还会返回gmail和ymail
在mysql中你必须使用%而不是*
所以只需替换它,一切都会好的。