我正在设计一个包含多个字段的表格,用于记录重量和长度
例子是:
5千克和50克将被存储为5.050
2米25厘米将存储为2.25。
哪种T-SQL数据类型最适合这些?
将需要针对这些字段进行一些计算,但使用默认小数(18,0)似乎有点过分。
答案 0 :(得分:7)
这实际上取决于您打算支持的值范围。您应该使用涵盖此范围的小数值。
例如对于重量,看起来你想要三个小数位。假设您希望最大值为1000千克,那么您需要7位数的精度,3位于小数点后面。这给你十进制(7,3)
答案 1 :(得分:7)
不要忘记放置units of measure in the column name,例如WeightInKilos,LengthInMetres
答案 2 :(得分:2)
最佳datatype取决于您要存储的重量和长度的范围和精度。为了存储人的体重,这将是0.00至1000.00公斤。所以你最需要6个数字(精度= 6),点后面有2个数字(比例= 2)。那是decimal:
weight decimal(6,2)
对于正常(非科学)使用,我会避免使用近似数字格式float
和real
。它们有一些令人惊讶的问题,最终用户很难重现计算结果。
答案 3 :(得分:0)
您需要清点测量的内容。如果它们是UI窗口的测量值,那么像素的整数就可以了。但这对于保持质子质量的测量是行不通的。这是规模和精确度的旧故事。
最简单的解决方案可能是将它们标准化为一个度量单位。正如harriyott所说,您可以将其添加到列名称中。如果需求或设计发生变化,由于后期的重构灵活性,我不是一个巨大的粉丝,但它是一个选项)
如果这些测量是开放式的,并且通常需要支持非常大到非常小的数量,那么测量可以分成两列。一个用于保持幅度,一个用于保持度量单位。如果你需要找到最重的物体等,那么最大的一个缺点是比较值。它可以用查找表来完成,但肯定会增加一定程度的复杂性。