在where子句中使用SQL not in function时,结果集中不返回null值

DaD*_*DaD 1 sql t-sql sql-server

我创建了一个简单的测试表来说明我的情况。两列都是varchar类型。

我的测试表

当我运行查询时,select * from test1 where TValue not in ('3','4')它仅返回以下3个值。

结果

我希望它也返回Sample6值。我想知道为什么它只返回3个值,我还需要做什么才能返回Sample6值。

Lar*_*rnu 5

由于NULL不相同的方式工作在“正常”比较喜欢其他价值=<IN,等等,你需要使用NULL的逻辑,以及:

WHERE TValue NOT IN (3,4)
   OR TValue IS NULL;
Run Code Online (Sandbox Code Playgroud)

NULL使用像这样的表达式比较时WHERE YourColumn != 1,其中YourColumn具有值NULL,将返回布尔表达式NULL。数据引擎将仅返回布尔表达式返回true的值,否则返回true,NULL因此NULL != 1不会导致返回行。