我的问题是:
在我工作的地方,我需要对一个非常大的数据库运行报告。我使用基本的SQL查询和PHP来过滤我想要的内容。偶尔会出现一些不符合搜索条件的组。
我注意到所有出现在我的报告中的“散兵游勇”似乎都在某些字段上具有NULL值。
查看数据库结构,发现这些数据库中的NULL值都有一个NOT NULL标志。
事实证明,这些实际上不是NULL值,而是空字符串或$value=''。
在我的过去经验中,当我刚开始学习时,我经常犯这个错误,将某些东西设置为''而不是设置为NULL。
我问过DBA,是否有任何合法的理由可以解释为什么这样设置(有300,000多条记录是这样的),但他毫无头绪。
我认为这可能是另一个程序员的错误,或者是某人尝试避免由于特定字段上设置了“NOT NULL”标志而无法插入记录。
因此,我在这里苦苦思索,试图找到这些存在的合法理由,除了我自己怀疑的那个:该数据库没有为这两种类型的记录设计:具有此值的记录和不具有此值的记录。
你有什么想法吗?
''
空字符串,那么你的“坏”记录是由于插入操作没有为其指定一个值,而数据库管理系统只是给了它默认值。 - Marc B