【发布时间】:2018-06-11 19:04:24
【问题描述】:
当我使用时
Select Distinct Brand_ID
from db.ABC
WHERE
Brand_ID <> 800
我得到返回的输出:
+----------+
| Brand_ID |
+----------+
| 100 |
| 200 |
| 300 |
| 400 |
| 500 |
| 600 |
| 700 |
| 900 |
+----------+
但是,该列确实包含存在的 NULL 值。 我需要更新我的选择语句以明确地说:
Select Distinct Brand_ID
from db.ABC
WHERE
Brand_ID <> 800 OR Brand_ID IS NULL
要获得正确的输出:
+----------+
| Brand_ID |
+----------+
| NULL |
| 100 |
| 200 |
| 300 |
| 400 |
| 500 |
| 600 |
| 700 |
| 900 |
+----------+
为什么NULL 值在没有明确说明的情况下会被删除?
【问题讨论】:
-
好问题,不知道答案。
-
NULL 是没有值。在这种情况下,它不是 800
-
@sgeddes 那就是我要找的那个!
-
@GregdeLima 这个功能总是让我很恼火,直到我真正想到 NULL 的含义。 NULL 表示值未知或不可用。所以没有定义真/假值语句。如果我不知道我有多少钱,我有 NULL 钱。这和没钱不一样。我可能有 27 美元,我可能没有,所以“我有 27 美元”的真值是未知的,而不是真假。
标签: sql sql-server sql-null