SQL标准规定中null值判断是否合理?


在postgres中判断null值时,下面语句的结果不相等,为什么?

select * from user_info where user_name is null
select * from user_info where user_name = null

原因是postgres遵循sql标准,在ANSI SQL(SQL-92)标准中规定的Null值的比较取值结果都为False.
它认为NULL 代表一个未知的数值,无法知道两个未知的数值是否相等。

这个理由很不充分,既然无法判断,那么is null又是如何判断它是空的呢?

虽然null表面含义是未知值,但是计算机中不可能有不确定的表示. 常见程序语言中null实际都是一个特殊值,一个确定的特殊值。所以在编程语言中是允许使用null=null(值比较)的. SQL中不允许是否合理?



上篇: postgres递归查询 下篇: mongodb安装