mysql - 如何过滤掉特定的电子邮件地址?

标签 mysql sql wildcard sql-like

我正在使用 MySQL 查询名为“clients”的客户详细信息表,其中包含一个名为“email”的电子邮件地址列。我想从 gmail、hotmail 和 yahoo 中排除所有电子邮件地址。我尝试编写查询(请参阅下面的最新查询),但我似乎无法正确使用 NOT LIKE 或找到替代方案。

有人可以帮忙吗?

MySQL 查询:

SELECT      name, email

FROM        clients

WHERE       email NOT LIKE '%gmail%'
    OR  email NOT LIKE '%hotmail%'
    OR  email NOT LIKE '%yahoo%'
;

结束

附注我搜索了现有的问题,但没有找到我需要的答案。如果已经存在,我深表歉意,如果您找到一个,我将不胜感激您为我指明正确的方向。我对这一切都是新手,因为几个月前我为了工作开始学习 SQL。

最佳答案

您已经差不多了,只需将 OR 替换为 AND

SELECT name, email
FROM clients
WHERE email NOT LIKE '%gmail%' AND email NOT LIKE '%hotmail%' AND email NOT LIKE '%yahoo%';

通过使用 AND 意味着每个条件都需要满足。仅使用 OR 意味着任何条件都可以为真,但因为您也使用 NOT LIKE 从技术上讲,每一行都将符合您的条件.

例如gmail 行分别匹配 hotmail 和 yahoo 规则,因此由于 OR 的作用,任何规则都可以匹配,因此将在结果中返回。

关于mysql - 如何过滤掉特定的电子邮件地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24260084/

相关文章:

MySQL:将一个文件的数据插入到两张表中,一张带有auto_increment id,一张连接表

java - 使用通配符 (*) 匹配的递归文件搜索

node.js - Nodejs Express 通配符路由不起作用

php - 在查询中使用字段名的内容

sql - 有效地替换字符串中的许多字符

php - Yii - 如何从另一个模型获取数据

java - 从数据库中获取具有可变条件的记录

java - 搜索通配符 ('<' , '>' ), 计数并得到在java中的位置

mysql - 如何合并两个具有相同数据但具有不同 PK 且没有重复字段的数据库?

mysql - fabric-ca-server 使用 ssl 连接到 mysql