我应该使用NULL还是空字符串来表示表列中没有数据?

Jus*_*ton 27 mysql database null

空字符串或空字符串 - 比表示列中没有数据的更好吗?(我特意使用MySQL,但我认为这是独立于系统的.)使用一个是否存在主要的优点/缺点,还是仅仅是程序员偏好?

Gre*_*ter 31

我强烈反对所有无条件使用NULL的人.允许列为NULL会引入一个额外的状态,如果将列设置为NOT NULL,则不会出现该状态.如果您不需要其他状态,请不要这样做.也就是说,如果你无法想出空字符串的含义和null的含义之间的区别,那么将列设置为NOT NULL并使用空字符串表示空.以两种不同的方式表示同样的事情是一个坏主意.

告诉你使用NULL的大多数人也给出了一个例子,其中NULL表示与空字符串不同的东西.在这些例子中,他们是对的.

但是,大多数情况下,NULL是一种不必要的额外状态,只会迫使程序员处理更多情况.正如其他人所提到的,Oracle不允许存在这种额外的状态,因为它将NULL和空字符串视为同一事物(不可能在Oracle中不允许null的列中存储空字符串).


Pau*_*lin 25

空值.空字符串不是"无数据",它的数据恰好是空的.


Jos*_*ein 5

Null is better "" 实际上代表数据,它不会在您的代码中注册相同的数据