【问题标题】:How can I filter out specific email addresses?如何过滤掉特定的电子邮件地址?
【发布时间】:2014-06-17 09:22:36
【问题描述】:

我正在使用 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 以工作。

【问题讨论】:

  • 对于这样的查询,您希望使用ANDs 而不是ORs
  • @Novocaine88 请作为答案提交,你是对的。

标签: mysql sql wildcard sql-like


【解决方案1】:

你快到了,只需将 OR 替换为 ANDs

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 可以匹配任何规则。

【讨论】:

  • 这很有意义,而且有效 - 非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-14
  • 2010-12-30
  • 1970-01-01
  • 2015-04-12
  • 1970-01-01
  • 2017-08-31
  • 2011-05-16
相关资源
最近更新 更多