为什么T-SQL允许NULL和'NULL'

Cof*_*fee 0 t-sql sql-server-2008

当我运行以下查询时:

select top 5 * from  BI_Completes (nolock)where IPAddress <> NULL
Run Code Online (Sandbox Code Playgroud)

我得到0结果.

但如果我把它作为

select top 5 * from  BI_Completes (nolock)where IPAddress <> 'NULL'
Run Code Online (Sandbox Code Playgroud)

然后它按预期工作..

这些有什么区别?

And*_*oni 8

您不能将比较运算符与NULL一起使用,因为NULL无法与自身进行比较.
您必须使用IS运算符:

select top 5 * 
from  BI_Completes (nolock)
where IPAddress IS NOT NULL
Run Code Online (Sandbox Code Playgroud)

第二个语句,检查IPAddress不等于字符序列'NULL'.