我有一个临时表,其中所有不同类型的数据都存储为字符串。具体来说,nvarchar(300)
。这些列代表各种各样的东西:日期;价格; 数量;等等
我将把这些数据移动到另一个表中,我想知道我应该如何定义目标列的数据类型。
- 我应该选择最接近我插入的数据的数据类型,还是,
- 我是否应该保留数据
nvarchar(300)
并让消费者有责任适当地转换或转换数据?
编辑:这是一个关系数据库。
始终使用最合适的数据类型并在应该显示/打印时对其进行转换。否则你总是需要来回解析它。
nvarchar
如果您存储所有内容(fe 而不是) ,您也可能会遇到本地化问题(有一天datetime
)。
使用正确的类型,否则大部分代码最终将成为转换例程,您将使用这些例程来访问通过使用正确的类型“免费”获得的功能。
作为一个真正简单的示例,请考虑使用 DATETIME 类型获得的所有功能,或者不同的全局表示可能带来的问题。
接受打击,编写一个健壮的导入例程并使用正确的类型。
如果您具有进行转换的领域理解,那么在移出临时表时肯定会更好 - 数据的消费者几乎肯定希望将数据重新转换为适当的列,所以价值你的工作基本上变成了文件副本。
如果不止一个消费者使用该表,那么如果您将所有内容都保留为字符串,则出现错误(由于对类型转换的不同解释)的可能性很高 - 尤其是。如果您必须处理数字(精度通常是一个问题)或日期时间值(同样,“2013 年 1 月 1 日”和“2013 年 1 月 1 日 12:00”之间的差异)。做一次,确保每个人都使用相同的数据类型。
不进行转换的唯一两个原因是没有领域知识,或者没有时间/金钱/精力来进行转换。在这两种情况下,您只是将问题推向下游。