8

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

WHERE field LIKE 'Pandora' AND field Not Like 'radio', 'digital', 'internet';

翻译:选择领域像潘多拉,而不像广播、数字或互联网。

有没有办法在不写 Not Like 3 次的情况下写这个语句,并且中间有 AND?

谢谢

4

3 回答 3

9

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

SELECT * FROM table WHERE field LIKE '%Pandora%' AND field NOT LIKE '%radio%' AND field NOT LIKE '%internet%' and field NOT LIKE '%digital%';
于 2013-10-25T00:45:11.737 回答
6

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

没有可能的方法field可以等于'Pandora''radio''digital''internet'

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

SELECT *
  FROM example
 WHERE field = 'Pandora';

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

SELECT *
  FROM example
 WHERE field_1 = 'Pandora'
   AND field_2 NOT REGEXP '^(radio|digital|internet)$';
于 2018-11-07T23:41:08.877 回答
2

If you're searching for specific words, you can use NOT IN()

WHERE field LIKE 'Pandora' AND field NOT IN('radio', 'digital', 'internet');

If you need the wildcard % in your search you'll need to use multiple LIKEs.

于 2013-10-25T00:38:29.847 回答