0

哪种方法更好用:

  • BoundField.NullDisplayText没有设置。在 SQL 查询中可以预见 NULL 情况,即SELECT ISNULL(amount, 0) FROM table

或者

  • BoundField.NullDisplayText设置,例如“0.00 %”。SQL 查询中没有预见到 NULL 情况,即SELECT amount FROM table

你怎么看?

4

4 回答 4

3

显然是第一个,因为您使用 ISNULL 进行过滤。

于 2010-05-16T20:19:51.140 回答
2

我认为第二个选择更好。通常最好在中间层或表示层而不是数据库中格式化输出。因此,我想将空值返回到数据层代码上方的层,并让它决定如何处理显示而不是在数据库中做出选择。

通过将空值转换为零,您对所有使用查询的系统声明空值等于用户故意输入零。如果情况确实如此,那么很好,使用 Coalesce 而不是 IsNull 并将空值转换为零。但是,如果查询被重用的可能性很小,并且缺少值的处理方式可能与输入零的方式不同,我会将空值返回到中间层并让它决定如何处理它.

于 2010-05-16T23:51:10.657 回答
1

不同之处在于 0.00 表示该字段具有值,而 NULL 表示相反。因此,从数据完整性的角度来看,前者是正确的。

于 2010-05-16T20:22:43.817 回答
1

你能做到两全其美吗?

  • ISNULL 仅适用于这种情况
  • 格式/逻辑应该在 UI 中
  • 其他使用“金额”的客户可能期望为 NULL,因此您现在有一个不一致的“合同”
  • 0 表示零,NULL 表示未知/无:2 种不同的状态
于 2010-05-17T04:36:50.770 回答