如何对多个值使用LIKE运算符

时间:2014-09-05 17:02:42

标签: php mysql

我有这个问题:

select * from users where mailaddress  
  NOT like '%banned_domain1.com%'  
    AND mailaddress NOT like '%banned_domain2.com%'  
      AND mailaddress NOT like '%banned_domain3.com%' ;

我想让它变得更简单,我从命令行执行了这个查询:

select * from users where mailaddress NOT like ('%banned_domain1.com%','%banned_domain2.com%','%banned_domain3.com%') ;

我收到MySQL错误:

ERROR 1241 (21000): Operand should contain 1 column(s)

4 个答案:

答案 0 :(得分:1)

您可以使用NOT REGEXP

SELECT * FROM users WHERE mailaddress NOT REGEXP 'banned_domain1.com|banned_domain2.com|banned_domain3.com';

请参阅live demo

答案 1 :(得分:1)

而不是“喜欢”使用“在”并格式化电子邮件地址,如下所示:

select * from users where SUBSTR(mailaddress, INSTR(mailaddress, '@') + 1)
NOT IN ('banned_domain1.com','banned_domain2.com','banned_domain3.com');

SUBSTR会删除@及其前面的任何内容,只留下域名,然后你就可以在没有使用IN的通配符的情况下进行完美的比较。

干杯!

答案 2 :(得分:0)

你必须每次都提到这个专栏

select * from tasks where title NOT LIKE '%eating lunch%' AND title NOT LIKE '%eating breakfast%' AND title NOT LIKE '%a new task%'
然而,正如Bruno Domingues所说,使用NOT IN会更容易

答案 3 :(得分:0)

您无法简化查询。每个条件你需要一个LIKE。