NULL
null是什么?
null什么也不是。
对于很多新人来说,
null难以感觉和理解。
null不是一个值。
而只是表示这个值目前暂缺。
但是我们不能以0或者空格来表示。
0或者空格还是表明这个值是个具体的什么东西。
0=0
空格=空格
任何的说教都是无聊的和不人道的。
让我们举个例子。
假设有个客户状况数据库的表。
关于客户的信息很多时候是逐步收集的。
假设说有个字段是关于你的用户究竟有几个房子,
当然这种信息是难以收集和获得的,
那么在这个字段里面,你可以暂时用null来填充。
这是表面目前不清楚这个客户究竟有几处房产。
这个字段,肯定是int的。
那么我们发现只能用null.
这是sql标准提供的功能。
此时,让我们再次对标准组织的人致以敬意,是他们在为我们构建我们的软件体系基础。
这种基础的完善程度将直接影响了构建于这种基础的各种商业软件的完美程度和行业标准的兼容程度。
但是厂商也会居心叵测的拉帮结派来成立各个协议和标准。
这在客观上就造成了标准和产品的兼容性的巨大问题。
同时我们可以看到,这也造成了我们产品资源和智慧资源的巨大浪费。
回首看看我们曾经用过的东西,发现有很多都是标准和协议的不断升级和演变和彼此消融。
浪费是巨大的。
但是这些商业公司还是如此尔虞我诈。
原因很简单: 暴利。
大同永远是我们人民大众的向往。
让我们再看。
select title from book where author = null
那么不管这个表中author是不是有null的行。
那么这个sql返回的都是空的结果集。
这就是sql在处理的null的特点。
当然不同数据库的或者不同sql标准sql体系在处理这样的语句的时候,会有细微的行为区别。
所以
在这样的情况下,
我们需要这样处理,
select title from book where author is null
sql是个美妙的海洋,
她让我们的生活变的更加方便和有趣。
所以,如果你有闲,有平淡的心境,
你不妨可以多研究sql的艺术,其中会有很多很好玩的东西在等着你。
原文链接 :
http://www.ituren.org.cn/html/jishusuibi/200806/19-28.html
[
本帖最后由 tubietubie 于 2008-9-1 17:11 编辑 ]