
NULL 是值吗?为什么=NULL 会出错?
很多人会将 NULL 称为“空值”。但这个称呼是非常有迷惑性的。事实
上,SQL 中的 NULL 不仅不是“空值”,NULL 甚至不能被视作一个
“值”。那么,你到底对 SQL 中的 NULL 了解多少呢?
此 NULL 非彼 NULL
首先,NULL 不等于 0,也不是’'(空字符串)。 这很好理解。
其次,NULL 也不是空值。空值,亦是一种值,表示此处确定为空。而
NULL 是一个更未知的状态——可能有值,可能无值,可能存在,可能
不存在,可能是任何值,可能不是任何值。总之一切皆有可能。
这一点和许多编程语言都不相同,不少语言中的 NULL,就是空值的意
思。例如,在 C、C++ 等语言中,NULL 表示空指针,是一个计算机
保留的值,表示不引用有效对象。但是 SQL 中的 NULL 用法和它们
并不一样。
最后,NULL 甚至都不是一种值。它不是“无值”,也不是“未知值”,
它只是一个标记符号。此处的值不确定,所以用 NULL 作为占位符来
标记一下而已。NULL 不是值,NULL 的值不确定,因此 NULL 与
NULL 是不相同的。在逻辑判断中,NULL=NULL 返回的判断结果不
是 TRUE ,而是 NULL。因为,未知和未知是无法进行比较的。
评论