标题

A值 判断 结果
10 A IS NULL FALSE
10 A IS NOT NULL TRUE
NULL A IS NULL TRUE
NULL A IS NOT NULL FALSE
10 A = NULL UNKNOWN (FALSE)
10 A != NULL UNKNOWN (FALSE)
NULL A = NULL UNKNOWN (FALSE)
NULL A != NULL UNKNOWN (FALSE)
NULL A = 10 UNKNOWN (FALSE)
NULL A != 10 UNKNOWN (FALSE)
NULL A > 10 UNKNOWN (FALSE)

NULL排序时比其他数据都大(索引默认是降序排列,小→大), 所以NULL值总是排在最后。
IS NULLIS NOT NULL 是不可分割的整体。
任何和NULL 的比较操作,如<>=<=等都返回UNKNOWN(这里的UNKNOWN就是NULL,它单独使用和布尔值FALSE类似):

+--------------+
|   10 is NULL |
|--------------|
|            0 |
+--------------+
+----------------+
|   NULL is NULL |
|----------------|
|              1 |
+----------------+
+-------------+
|   10 = NULL |
|-------------|
|      <null> |
+-------------+
+--------------+
|   10 != NULL |
|--------------|
|       <null> |
+--------------+
+---------------+
|   NULL = NULL |
|---------------|
|        <null> |
+---------------+
+-------------+
|   NULL = 10 |
|-------------|
|      <null> |
+-------------+
+--------------+
|   NULL != 10 |
|--------------|
|       <null> |
+--------------+
+-------------+
|   NULL > 10 |
|-------------|
|      <null> |
+-------------+