Where语句带有多个“不喜欢”

ZJA*_*JAY 7 mysql sql sql-server

我正在尝试编写以下语句:

WHERE field LIKE 'Pandora' AND field Not Like 'radio', 'digital', 'internet';
Run Code Online (Sandbox Code Playgroud)

翻译:选择字段是潘多拉(Pandora),而不是广播,数字或互联网。

有没有一种方法可以编写此语句,而不必在两次之间用AND编写Not Like 3次?

谢谢

Gra*_*ler 7

首先,您的查询是多余的,因为如果field是,则其他条件默认返回false。LIKE 'pandora'

有没有可能的方式,field可以等于'Pandora''radio''digital',和'internet'

因此,您可以使用以下示例简化查询:

SELECT *
  FROM example
 WHERE field = 'Pandora';
Run Code Online (Sandbox Code Playgroud)

如果这两个条件代表两个单独的字段,那么您可以使用REGEXP运算符来强制执行DRY 原则,同时仍然允许进一步的模式匹配

SELECT *
  FROM example
 WHERE field_1 = 'Pandora'
   AND field_2 NOT REGEXP '^(radio|digital|internet)$';
Run Code Online (Sandbox Code Playgroud)


Kur*_*urt 6

如果“字段”不仅仅是一个单词,则需要执行以下操作:

SELECT * FROM table WHERE field LIKE '%Pandora%' AND field NOT LIKE '%radio%' AND field NOT LIKE '%internet%' and field NOT LIKE '%digital%';
Run Code Online (Sandbox Code Playgroud)


cal*_*nai 3

如果您要搜索特定单词,可以使用NOT IN()

WHERE field LIKE 'Pandora' AND field NOT IN('radio', 'digital', 'internet');
Run Code Online (Sandbox Code Playgroud)

如果您在搜索中需要通配符,%则需要使用多个LIKEs。