我目前正在参加一个在线SQL课程。
在本模块中:
1.我的任务是识别数据集中的所有空行。
1.识别之后,请填入null来执行数据清除。
答案:此代码返回所有空项/行的列表。
SELECT * FROM cprodsales2
WHERE NOT(cprodsales2 IS NOT NULL)
;
我尝试过的:此代码不返回任何内容。空白。
SELECT * FROM cprodsales2
WHERE cprodsales2 IS NULL
;
我很困惑为什么两个代码不会返回相同的结果。
我目前正在参加一个在线SQL课程。
在本模块中:
1.我的任务是识别数据集中的所有空行。
1.识别之后,请填入null来执行数据清除。
答案:此代码返回所有空项/行的列表。
SELECT * FROM cprodsales2
WHERE NOT(cprodsales2 IS NOT NULL)
;
我尝试过的:此代码不返回任何内容。空白。
SELECT * FROM cprodsales2
WHERE cprodsales2 IS NULL
;
我很困惑为什么两个代码不会返回相同的结果。
1条答案
按热度按时间unguejic1#
问题是您要比较的是整行,而复合表达式在
IS NULL
和IS NOT NULL
中的行为很奇怪:这是SQL标准所要求的。NULL和复合类型很奇怪。
如果所有组件均为NULL,则为
IS NULL
行类型。如果所有组件均不为NULL,则为IS NOT NULL
行类型。其他任何行既不是NULL,也不是NOT NULL。因此,
WHERE NOT(cprodsales2 IS NOT NULL)
将只传递那些至少有一列具有NULL值的表行。