postgres递归查询
sqlfront.h 没有那个文件或目录

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

妙音 posted @ 2014年2月11日 18:50 in 数据库 with tags sql;postgres , 889 阅读
在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中不允许是否合理?
 

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter