"Not equal <> !=" 操作符在 NULL 上的作用。

35 浏览
0 Comments

"Not equal <> !=" 操作符在 NULL 上的作用。

请问有人能解释一下SQL中以下的行为吗?

SELECT * FROM MyTable WHERE MyColumn != NULL (0 Results)
SELECT * FROM MyTable WHERE MyColumn <> NULL (0 Results)
SELECT * FROM MyTable WHERE MyColumn IS NOT NULL (568 Results)

admin 更改状态以发布 2023年5月21日
0
0 Comments

NULL没有任何值,因此不能使用标量值运算符进行比较。

换句话说,因为NULL没有任何值,所以没有任何值能够等于(或不等于)NULL。

因此,在SQL中有特殊的IS NULL和IS NOT NULL谓词来处理NULL。

0
0 Comments

<> 是标准 SQL-92 的写法;!= 是其等价写法。两者都用于比较数值,其中 NULL 不是数值,而是用来表示缺少数值的占位符。

这就是为什么你只能在这种情况下使用 IS NULL/IS NOT NULL 作为谓词。

这种行为并不特定于 SQL Server。所有符合标准的 SQL 方言都是这样工作的。

注意:要比较你的数值是否非空,你可以使用 IS NOT NULL;而要比较不为空的数值,你可以使用 <> 'YOUR_VALUE'。我不知道我的数值是否等于或不等于 NULL,但我可以知道我的数值是否 NULL 或 NOT NULL,我可以比较我的数值是否与 NULL 不同。

0