我正在尝试编写以下语句:
WHERE field LIKE 'Pandora' AND field Not Like 'radio', 'digital', 'internet';
翻译:选择领域像潘多拉,而不像广播、数字或互联网。
有没有办法在不写 Not Like 3 次的情况下写这个语句,并且中间有 AND?
谢谢
我正在尝试编写以下语句:
WHERE field LIKE 'Pandora' AND field Not Like 'radio', 'digital', 'internet';
翻译:选择领域像潘多拉,而不像广播、数字或互联网。
有没有办法在不写 Not Like 3 次的情况下写这个语句,并且中间有 AND?
谢谢
如果“字段”不仅仅是单个单词,您需要执行以下操作:
SELECT * FROM table WHERE field LIKE '%Pandora%' AND field NOT LIKE '%radio%' AND field NOT LIKE '%internet%' and field NOT LIKE '%digital%';
首先,您的查询是多余的,因为如果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)$';
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 LIKE
s.