Sql server 为什么SQL语言使用的是NULL或notnull而不是=NULL或<&燃气轮机;无效的

Sql server 为什么SQL语言使用的是NULL或notnull而不是=NULL或<&燃气轮机;无效的,sql-server,tsql,Sql Server,Tsql,我主要有应用开发背景。在编程语言中variable==null或variable!=空有效 对于SQL,下面的查询不会给出任何语法错误,但也不会返回正确的结果 select SomeColumn from SomeTable where SomeNullableColumn=null select SomeColumn from SomeTable where SomeNullableColumn<>null 为空或不为空而不是=null或为空的原因/要求是什么 这是ANSI SQ

我主要有应用开发背景。在编程语言中
variable==null
variable!=空
有效

对于SQL,下面的查询不会给出任何语法错误,但也不会返回正确的结果

select SomeColumn from SomeTable where SomeNullableColumn=null
select SomeColumn from SomeTable where SomeNullableColumn<>null
为空
不为空
而不是
=null
为空
的原因/要求是什么


这是ANSI SQL还是Microsoft的TSQL标准?

因为
null
不等于
null
,就像
NaN
(“不是一个数字”,例如,当0除以0或提升到0的幂)不等于
NaN
。考虑<代码> null <代码>作为一个未知值(未知值不一定等于某个未知值)。

< P>因为SQL是基于集合论和谓词逻辑的。这两个强大的数学基础包含数学逻辑-
布尔代数
。在该逻辑中存在三个值-
TRUE、FALSE和UNKNOWN(=NULL)

使用
Is null
代替
=null
来分隔逻辑。为什么是ANSI标准?这是为了使它更具可读性,并分离三值逻辑

在通用数据仓库中,null被“”替换,以使qry更简单


或者尝试
SET ANSI_NULLS OFF
选项。

因为
NULL
不是值,这意味着没有值。你不能将某物与无进行比较。可能是重复的是重复的
select SomeColumn from SomeTable where SomeNullableColumn is null
select SomeColumn from SomeTable where SomeNullableColumn is not null