在 mysql 查询中结合 Not In 和 like 函数

combine Not In and like function in mysql query

我想知道有没有办法将 not in() 函数与 like 或 MySQL 中的通配符 * 合并?如以下查询:

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%' 

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

否,但您可以使用 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 列中存储标签列表。这不是最好的方法。您应该有一个单独的 table,在您的原始数据中每行包含一个标签。结点 table 上的查询会更简单。

不,没有这样的运算符。

但是您可以使用 Regular Expressions

以稍微不同的方式执行此操作
SELECT sl_tags
  FROM tablname
  WHERE sl_tags NOT REGEXP 'Soccer|Football|Hockey|shinny|Basketball';

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