2012-01-26 122 views
1

我有几个表包含几个字段的字符串。其中一些字段可能包含也可能不包含数据。如果我在创建记录时创建了一个空字符串字段的记录,当我对该记录执行读取查询时,是否会成为问题,因为字段为空或查询是否返回空字符串? 基于什么考虑?非nullabe字符串或可空字符串,以及何时知道区别?数据库字符串字段类型:是否应该为空?

感谢您的建议。

回答

1

查询将返回一个空字符串(如果这是存储在数据库中的)和一个空值(System.DBNull),如果它是一个可为null的空字符串。

但是,该决定应基于您正在建模的数据,而不是查询的功能。

DB中的空值通常表示值未知或空白。这可以不同于可以用来表示没有价值的空字符串。

以一个MiddleName字段为例。您可能想区分没有中间名的人(空字符串)和尚未输入中间名的人(空值)。在这种情况下,你需要一个可为空的字符串字段。

1

这已经一遍又一遍的争论了数百万次。但在我看来,NULL值是有原因的,你应该远离“魔术”值(即使空字符串意味着什么,不是)。

NULL值不会在读取时转换为任何内容。你会得到空。你应该把它解释为“这个值尚未设定”,并以这种方式来对待它。如果你用任何魔法值(例如空字符串)替换它,那么你只是在寻找麻烦,迟早魔法值会开始具有别的意义,并且你不会知道如何区别它从未设置过。

换句话说,如果您考虑属性为可选,那么它肯定是可空的候选者。每当你开始与自己辩论时,记住单词“可选”,我相信你会做出一个好决定。

1

在数据库管理员的堆栈交换站点上有一个similar question。他们几乎回应这里所说的话。

有一件没有提到的事情是,如果你试图乘以一个真值的空值,你会得到一个空结果。许多其他操作也是如此。

相关问题