mysql - MySQL 中 NOT LIKE 查询的问题

标签 mysql

我想做出一个排除以 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/

相关文章:

php - 在 prestashop DB 的表内复制

PHP:下载 MySQL 表

php - 我如何查询随机行并跟踪已查询的内容(这是重要的部分)

mysql - 按组自动递增

mysql - 删除除一条记录之外的所有重复记录

mysql - 在同一调用中将列转换为不同类型

mysql - 嵌套 SQL 查询和更新

php - 纯mysql而不是php中的批量更新?

带游标的Mysql存储过程

php - 如何在 SQL (MySQL) 中合并两个表?