为什么 [table].[column] != null 不起作用?
在数据库中,NULL
不是一个值,它表示"未知"或"数据缺失"的含义。
你无法判断一个你没有任何关于的东西是否等于另一个你也没有任何信息的东西(使用=
、!=
操作符)。但你可以判断是否有任何信息可用(使用IS NULL
、IS NOT NULL
)。
在实践中,这种方法并不是非常有用。但这就是它的存在方式,并且有着悠久的历史。
为什么[table].[column] != null
不起作用?
这个问题的出现原因是NULL
不是一个值,它代表未知或数据缺失。因此,你无法使用!=
操作符来判断一个列是否不等于NULL
。
解决方法:
要判断一个列是否不等于NULL
,你应该使用IS NOT NULL
操作符。这样可以判断该列是否有任何可用的信息。
例如,如果你想选择一个users
表中不为空的name
列的所有行,你应该使用以下查询语句:
SELECT * FROM users WHERE name IS NOT NULL;
这将返回所有name
列不为空的行。
NULL
在数据库中代表未知或数据缺失,不是一个值。因此,你不能使用!=
操作符来判断一个列是否不等于NULL
。相反,你应该使用IS NOT NULL
操作符来判断列是否有任何可用的信息。通过使用IS NOT NULL
操作符,你可以正确地判断列是否不等于NULL
。
为什么[表].[列]!= null不起作用?
在SQL中,不能使用等号操作符(=)与NULL进行比较,因为NULL表示未知的值,所以无法将某个值与未知的值进行相等比较。这就是为什么提供了IS NULL子句,用于过滤列为null的行。
在SQL Server中,存在三值逻辑(THREE VALUED LOGIC)。有三个可能的逻辑值:真(TRUE),假(FALSE)和未知(UNKNOWN)。当使用等号操作符(=)时,如果某个操作数为NULL,结果将是未知。因此,使用[表].[列]!= null进行比较时,结果也将是未知,而不是真(不相等)。
为了解决这个问题,可以使用IS NULL或IS NOT NULL子句来判断某个列是否为null。例如,可以使用以下查询来过滤出列不为null的行:
SELECT * FROM [表] WHERE [列] IS NOT NULL;
这样就可以筛选出列不为null的行,而不管列的具体值是什么。
希望这篇文章对你理解为什么[表].[列]!= null不起作用以及如何解决这个问题有所帮助。如需了解更多关于三值逻辑的内容,可以参考上述提供的链接。