2

我在存储数值的 SQL 服务器数据库中有一个列。问题是有时这个数字是十亿,有时是 1.355 E -16。我会将数字设置为像 numeric(35,20) 这样的巨大数字,但我认为这会使它们都占用数据库中的那么多空间,这似乎是一种浪费。有没有办法有效地做到这一点,就像我们在有时有短字符串和其他时候有长字符串时如何使用 varchar 一样?

4

2 回答 2

3

什么版本和版本的 SQL Server?SQL Server 2005 SP2 引入了一种vardecimal格式,该格式已被弃用以支持使用行和页压缩

两者vardecimal和压缩都需要企业版引擎。

于 2012-09-21T20:02:20.603 回答
1

好吧,这将取决于您将使用该号码的目的。

您可以使用 FLOAT,它可以存储浮点数和实数(Transact-SQL)

float
- 1.79E+308 to -2.23E-308, 0 and 2.23E-308 to 1.79E+308
real
- 3.40E + 38 to -1.18E - 38, 0 and 1.18E - 38 to 3.40E + 38

我之所以说这取决于您要实现的目标是

用于浮点数值数据的近似数数据类型。浮点数据是近似的;因此,并非数据类型范围内的所有值都可以准确表示。

SQL 小提琴示例

现在围绕选择哪种数据类型的讨论花费了很多啤酒,但规则将保持不变。这取决于某些位对您的重要性。

于 2012-09-21T20:00:16.687 回答