SQL 中的 NOT(IS NULL) 与 IS NOT NULL 有何不同?

时间:2021-02-24 20:04:05

标签: mysql sql boolean boolean-expression

这个 SQL 查询有什么问题?

SELECT * FROM database.tablename  
WHERE columnname NOT (IS NULL)  

既然 IS NULL 是一个布尔值,为什么 NOT 不否定它? 而是返回这个
Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(IS NULL)' at line 2

1 个答案:

答案 0 :(得分:1)

这纯粹是语法错误。

没有像下面这样的语法

SELECT * FROM database.tablename  
WHERE columnname (IS NULL) 

columnname 在上面的例子中变成了函数。正确的例子是

SELECT * FROM database.tablename  
WHERE columnname IS NULL

所以如果你想在 IS Null 之前使用 Not before 你需要像下面这样使用它:

SELECT * FROM database.tablename  
WHERE Not (columnname IS NULL)  

因为 (columnname IS NULL) 是表示不 (IS NULL)

但传统的方法是使用如下:

SELECT * FROM database.tablename  
WHERE columnname IS NOT NULL

(以上两条语句将返回相同的结果。)