正如你可以在下面的图片中看到,如果我执行下面的查询,我得到至少10个结果:为什么我不能选择!= Nvarchar?
SELECT TOP (10) [t0].[u_nonreportable]
FROM [sdidataitem] AS [t0]
WHERE [t0].[u_nonreportable] IS NULL
相反,如果我只是这样执行查询,我得到没有结果:
-- Region Parameters
DECLARE @p0 NVarChar(1000) = 'Y'
-- EndRegion
SELECT TOP (10) [t0].[u_nonreportable]
FROM [sdidataitem] AS [t0]
WHERE [t0].[u_nonreportable] <> @p0
如果有结果,其中[u_nonreportable]为空,那么当我说[u_nonreportable]!='Y'?为什么我没有得到任何结果?
注:我在上面的例子中使用LINQPad;不过,我也通过在SSMS中运行SQL查询来确认结果。
因为在SQL NULL永远不会等于任何东西......并且它也不等于任何东西。因为它是NULL,它意味着未知,因此知道或不知道该值实际上是否是“Y”在逻辑上是不可能的。 –