我正在尝试撰写以下声明:
WHERE field LIKE 'Pandora' and field Not Like 'radio', 'digital', internet';
翻译:选择Pandora字段的位置,而不是广播,数字或互联网。
有没有办法编写这个语句,而不用中间的AND编写Not Like 3次?
谢谢
答案 0 :(得分:5)
如果"字段"不只是单个单词,你需要做这样的事情:
select * from table where field like '%Pandora%' and field not like '%radio%' and field not like '%internet%' and field not like '%digital%';
答案 1 :(得分:3)
如果您要搜索特定字词,可以使用NOT IN()
WHERE field LIKE 'Pandora' AND field NOT IN('radio', 'digital', 'internet');
如果您在搜索中需要通配符%
,则需要使用多个LIKE
。
答案 2 :(得分:0)
首先,您的查询是多余的,因为如果field
为LIKE
'pandora'
,则默认情况下其他条件将返回false。
不可能field
等于'Pandora'
,'radio'
,'digital'
和'internet'
。
因此,您可以使用以下示例简化查询:
SELECT *
FROM example
WHERE field = 'Pandora';
如果两个条件代表两个单独的字段,则可以使用REGEXP
运算符强制执行DRY principle,同时仍然允许进一步的pattern matching:
SELECT *
FROM example
WHERE field_1 = 'Pandora'
AND field_2 NOT REGEXP '^(radio|digital|internet)$';