这是我在Microsoft Sql Server中发现的奇怪行为.如果我错了,请纠正我.
SELECT COUNT(*) FROM TABLEA
WHERE [Column1] IS NULL;
Run Code Online (Sandbox Code Playgroud)
这将返回30018行.
CREATE VIEW VIEWB AS
SELECT * FROM TABLEA AS t1
WHERE t1.[Column1] NOT IN ('Cross/Up sell', 'Renegotiation', 'Renewal')
Run Code Online (Sandbox Code Playgroud)
如果我检查VIEWB,我不觉得NULL在Column1:
SELECT COUNT(*) FROM VIEWB
WHERE [Column1] IS NULL;
Run Code Online (Sandbox Code Playgroud)
这将返回0行.
为什么?上面的查询排除了3个值,但不应该排除NULL.为什么Sql Server Ms会以这种方式运行?我应该预料到这一点吗?我该如何解决?