3

假设我有一个实验室程序的测试结果值为 10 3。将其存储在 SQL Server 中的最佳方法是什么?我认为,由于这是数字数据,因此将其存储为字符串文本然后围绕从字符串计算数据值进行编程是不合适的。

4

2 回答 2

1

如果您想在数值计算中使用您的数据,最好使用 SQL 服务器本机数值数据类型之一来表示您的数据。由于您显示科学记数法,因此您可能希望使用 REAL 或 FLOAT。

Real 基本上是 7 位小数精度,而 float 具有 15 位精度(至少这是它们通常的使用方式)。您实际上可以为 FLOAT 指定降低的精度,但实际上大多数人在这种情况下只使用 REAL。REAL 需要 4 个字节的存储空间,而 FLOAT 需要 8 个字节。

其他数字类型用于固定小数点算术。

于 2013-09-12T18:52:54.663 回答
0

像这样的科学计数法数字具有三个信息:

  1. 有效数字
  2. 有效数字的精度
  3. 10 的指数

假设我们希望尽可能准确地保留所有这些信息,最好将这些信息存储在三个非浮点列中(浮点值不准确):

DECIMAL significand
INT precision (# of decimal places)
INT exponent

当然,将这些部分分离出来的方法的缺点是,在进行计算时您必须将这些值重新组合在一起——但通过这样做,您将知道结果的有效数字的正确数量。存储这三个部分也将占用每个值 25 个字节( 17 个字节DECIMAL,两个INTs 各 4 个字节),如果您要存储大量值,这可能是一个问题。


根据解释性评论更新:

鉴于您的目标是存储 1-8 的指数,您实际上只需要存储指数,因为您知道尾数始终为 10。因此,如果您的值始终是整数,您可以使用单列INT;如果它有小数位,您可以使用 aFLOATREALper Gary Walker,或使用 aDECIMAL将精确的小数存储到指定的位数。

如果指定 a DECIMAL,则可以在列类型中提供两个参数;第一个是要存储的总位数,而第二个是小数点右侧的位数。因此,如果您的值要精确到十分位,您可以创建一列DECIMAL(2,1). SQL Server MSDN 文档:DECIMAL 和 NUMERIC 类型

于 2013-09-12T20:16:15.610 回答