1

我想知道有没有办法在 MySQL 中将not in()函数与like通配符合并?*就像在以下查询中一样:

select sl_tags from tablname
    where `sl_tags` not in ('%Soccer%','%Football%','%Hockey%','%shinny%','%Basketball%','%Volleyball%','%Cricket%')

上面的查询不起作用。

我知道这行得通

select sl_tags from tablname where `sl_tags` Not like '%Soccer%' and `sl_tags` Not like '%Football%' 

我在堆栈上看到了以前的问题和答案,但没有找到任何相关的答案。

4

2 回答 2

2

不,没有这样的运营商。

但是您可以使用正则表达式以稍微不同的方式执行此操作

SELECT sl_tags
  FROM tablname
  WHERE sl_tags NOT REGEXP 'Soccer|Football|Hockey|shinny|Basketball';

请注意,对于某些字符(如 dot .)具有特殊含义,需要转义才能按字面意思使用。

于 2015-03-13T12:07:36.090 回答
0

不,但您可以使用not like

select sl_tags
from tablname
where sl_tags Not like '%Soccer%', and
      sl_tags Not like '%Football%' and
      sl_tags Not like '%Hockey%', and
      sl_tags Not like '%shinny%' and
      sl_tags Not like '%Basketball%' and
      sl_tags Not like '%Volleyball%' and
      sl_tags Not like '%Cricket%';

您没有提供信息,但列名表明您在列中存储标签列表sl_tags。这不是最好的方法。您应该有一个单独的表格,在原始数据中每行包含一个标签。联结表上的查询会更简单。

于 2015-03-13T10:57:54.493 回答