我该如何在数据库中选择列数据类型?

时间:2012-12-18 15:35:38

标签: sql database tsql

我有一个临时表,它将所有不同类型的数据存储为字符串。具体来说,nvarchar(300)。这些列代表了各种各样的东西:日期;价格;数量;等

我将把这些数据移到另一个表中,我想知道如何定义目标列的数据类型。

  1. 我应该选择的数据类型与我插入的数据最匹配,或者
  2. 我应该将数据保留为nvarchar(300)并使消费者有责任正确转换或投放数据吗?
  3. 编辑:这适用于关系数据库。

3 个答案:

答案 0 :(得分:1)

始终使用最合适的数据类型,并在显示/打印时将其转换。否则你总是需要来回解析它。

如果您为所有内容存储nvarchar(例如,而不是datetime),您可能会遇到本地化问题(某天)。

答案 1 :(得分:1)

使用正确的类型,否则很大一部分代码将最终成为转换例程,您将使用这些转换例程来访问使用正确类型“免费”获得的功能。

作为一个真实的简单示例,请考虑使用DATETIME类型获得的所有功能,或者不同的全局表示可能带来的问题。

点击命中,编写一个强大的导入例程并使用正确的类型。

答案 2 :(得分:1)

如果你有域名理解来进行转换,那么移出登台表肯定会更好 - 数据的消费者几乎肯定会想要将数据重新转换为正确的列,所以你的工作价值基本上变成了文件副本。

如果多个消费者使用该表,如果您将所有内容都保留为字符串,则错误的可能性(由于对类型转换的不同解释)很高 - 尤其是。如果你必须处理数字(精确度通常是一个问题)或日期时间值(再次,“2013年1月1日”和“2013年1月1日12:00”之间的差异)。做一次,确保每个人都使用相同的数据类型。

不进行转换的唯一两个原因是没有领域知识,或没有时间/金钱/精力去做。在这两种情况下,你只是将问题推向了下游。