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

How is NOT(IS NULL) different from IS NOT NULL in SQL?

这个 SQL 查询有什么问题?

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

既然IS NULL是一个布尔值,为什么NOT不取反呢? 而是 returns 这个
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

纯粹是语法错误。

没有像下面这样的语法

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

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

SELECT * FROM database.tablename  
WHERE columnname IS NULL

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

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

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

但是常规的方法是像下面这样使用:

SELECT * FROM database.tablename  
WHERE columnname IS NOT NULL

(以上两个语句会return相同的结果。)