我想做出一个排除以 07、0256 和 0356 开头的条目的选择。 这就是我厌倦的:
SELECT * FROM rapoarte WHERE nrtel NOT LIKE '07%' OR nrtel NOT LIKE '0256%' OR nrtel NOT LIKE '0356%'
但它一直在选择所有条目。
最佳答案
条件 nrtel NOT LIKE '0256%' OR nrtel NOT LIKE '0356%'
始终为真(除非 nrtel 为 NULL)。你需要使用 AND:
SELECT * FROM rapoarte
WHERE nrtel NOT LIKE '07%'
AND nrtel NOT LIKE '0256%'
AND nrtel NOT LIKE '0356%'
或者如果你觉得它更容易阅读,你可以重写如下:
SELECT * FROM rapoarte
WHERE NOT (
nrtel LIKE '07%' OR
nrtel LIKE '0256%' OR
nrtel LIKE '0356%'
)
表达式 (NOT a) OR (NOT B)
与 NOT (a OR b)
不同。参见 De Morgan's Laws .
关于mysql - MySQL 中 NOT LIKE 查询的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3955396/