标记中的NullDisplayText与SQL中的ISNULL(字段,0)?

时间:2010-05-16 20:17:41

标签: sql tsql null isnull

哪种方法更好用:

  • BoundField.NullDisplayText未设置。在SQL查询中预见到NULL-case,即SELECT ISNULL(amount, 0) FROM table

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

您怎么看?

4 个答案:

答案 0 :(得分:3)

显然是第一个,因为你用ISNULL过滤。

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

区别在于0.00表示该字段具有值,而NULL表示相反。因此,从数据健全的角度来看,前者是正确的。

答案 3 :(得分:1)

你能做到最好吗?

  • ISNULL仅提供此单一案例
  • 格式化/逻辑应该在UI中
  • 使用“金额”的其他客户可能会遇到NULL,因此您现在有一个不一致的“合同”
  • 0表示零,NULL表示未知/无:2个不同的状态