2016-12-01 91 views
3

我主要有应用程序开发背景。在编程语言variable == nullvariable != null的作品。为什么SQL语言使用IS NULL或IS NOT NULL而不是= NULL或<> NULL?

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

select SomeColumn from SomeTable where SomeNullableColumn=null 
select SomeColumn from SomeTable where SomeNullableColumn<>null 

为什么我们需要编写与is nullis not null查询得到正确的结果?

select SomeColumn from SomeTable where SomeNullableColumn is null 
select SomeColumn from SomeTable where SomeNullableColumn is not null 

背后有什么is nullis not null代替=null<>null原因/要求?

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

+3

由于'NULL'不是一个值,这意味着没有价值。你无法比较任何东西。 –

+0

可能重复[为什么是null不等于null false](http://stackoverflow.com/questions/1833949/why-is-null-not-equal-to-null-false) – EoinS

+2

yup重复的http:///stackoverflow.com/questions/9581745/sql-is-null-and-null –

回答

2

因为null不等于null,像NaN(“非数字”的情况下,例如,将0除以0或升高至0功率生产)不等于NaN。考虑将null作为未知值(未知值不一定等于某个未知值)。

1

因为sql基于集合论和谓词逻辑。这两个强大的数学基础包含数学逻辑 - Boolean algebra。在这个逻辑中存在三个值 - TRUE, FALSE and UNKNOWN (=NULL)。用于代替= null来分离逻辑。为什么它是ANSI标准?这是为了使它更易于阅读和分离三值逻辑。

在通常的数据库中,用null替换为'使得qry更简单。

或尝试SET ANSI_NULLS OFF选项。