SQL Server 2005 中一个数字可以存储多少位数字?
我有一个来自 Oracle 数据库的号码 47306832975095894070.85314746810624532。 当我将它带入 SQL Server 时,它肯定不会显示那么多数字。 显示为4.73068329750959E+19,该字段定义为FLOAT。
我认为这可能包括所有有效数字,但有人问我是否可以按照 Oracle 的方式精确存储该数字。 是否有另一种数据类型可以存储所有数字? SQL Server 2005中有没有一种方法可以不以指数形式显示数字,而是显示存储的所有数字?
I have a number from an Oracle database of 47306832975095894070.85314746810624532. When I bring it into SQL Server, it certainly doesn't show that many digits. It shows as 4.73068329750959E+19, and the field is defined as FLOAT.
I think that probably includes all the significant digits, but I'm being asked if the number can be stored exactly as Oracle had it. Is there a another data type that will store ALL the digits? Is there a way in SQL Server 2005 to display the number not in exponential, but show all the digits stored?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用十进制数据类型。
decimal(p,s) - p 是精度值,s 是小数位数。
Use decimal data type.
decimal(p,s) - p is a precision value, s is a scale value.
使用 Decimal(38,17) 代替浮点数。 这应该允许您以与 Oracle 中相同的精度存储数字。
instead of float, use Decimal(38,17). This should allow you to store the number with the same precision that you had in Oracle.
相当于 NUMBER< em>(p, s) Sql Server 上的 Oracle 数据类型是 数字(p, s)数据类型。 请注意,p(精度)和 s(小数位数)的默认值在两个平台上并不相同。
在 Sql Server 上, float 表示浮动完全不同的点数, 数字的近似表示。 在 Oracle 上,等效项为 BINARY_DOUBLE。
The equivalent of the NUMBER(p, s) Oracle datatype on Sql Server is the numeric(p, s) datatype. Note that the default values for p (precision) and s (scale) are not the same on both platforms.
On Sql Server, a float represents a floating point number that is a whole different, approximate representation of a number. On Oracle, the equivalent would be BINARY_DOUBLE.