MySQL中的NULL
标题
| 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 NULL 和IS 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> |
+-------------+