空字符串值与使用空值的好处是什么

Kev*_*ins 5 php coding-style sql-server-2005

这是我的问题:

在我工作的地方,我需要在一个非常大的数据库上运行报告.我在PHP中使用基本的SQL查询来过滤我想要的内容.我经常会在报告中看到不符合搜索条件标准的群组.

我注意到,我的报告中出现的所有"落后者"似乎都在某些字段中具有NULL值.

查看数据库结构,我发现数据库中的这些NULL值都设置了NOT NULL标志.

事实证明,这些实际上不是NULL值,而是空字符串值或$ value =''

在我过去的经历中,当我开始时,我会犯这个错误,设置一些东西=''而不是让它为NULL.

我已经问过DBA他是否可以想出为什么这样设置的合理原因(有300,000个奇怪的记录是这样的)并且他没有任何线索.

我认为这可能是另一个程序员错误或有人试图避免由于在该特定字段上设置的"NOT NULL"标志而无法插入记录.

所以我在这里试图寻找存在这些存在的正当理由,除了我自己的怀疑,数据库不是为这两种类型的记录设计的:具有此值的记录和没有此值的记录.

你的想法是什么?

fvu*_*fvu 2

使用 NULL 作为数据库中的值有其批评,我想参考有关 NULL 的维基百科文章,以解释 NULL 可能在查询中引入的一些奇怪现象。

因此,数据库架构师可能不喜欢 NULL,也许是在阅读了“第三宣言”之后。 此 PDF (由《第三宣言》的作者之一撰写)可以帮助您理解问题,并向您展示如何管理可以处理的缺失值的特殊情况。