在SQL Server中存储非常大的数字

问题描述 投票:6回答:4

我将如何在SQL Server 2008中存储像92233720368547758079223372036854775807922337203699这样的大数字? bigint允许的最大值为9223372036854775807

[我想我可以采取的一种方法是执行以下操作,将数字存储为varchar(50),然后在C#代码中可以执行]]

BigInteger x = BigInteger.Parse("922337203685477580792233720368547758079223372036");

非常感谢您的反馈。谢谢

我将如何在SQL Server 2008中存储像92233720368547758058079223372036854775807922337203699这样的大量数字?最大bigint允许为9223372036854775807,我想我可以采取的一种方法是...

c# sql sql-server-2008 biginteger
4个回答
15
投票

在这种情况下要问自己的一个相关问题,以下是我在评论中问过你的一个问题:


6
投票

根据您的评论,如果您不对其进行任何算术运算(即,它只是一个标识符),则它不必一定是-也许根本就不应该是-一个数字。只需将它作为字符串保存在数据库和正在使用的应用程序中,然后继续即可。


1
投票
您将数字存储为字符串的方法是最安全的方法。 SQL并非旨在处理无限精度数字。例如,DECIMAL的大小限制为仅几十个有效数字。

[另一种选择是将数字存储为varbinar()(如果知道最大大小,则存储为binary())。这可行,但是您将以应用程序而非数据库使用的格式存储数字。这可能会限制应用程序的可移植性。


-1
投票
考虑使用decimal数据类型。它最多可以存储38位数字。
© www.soinside.com 2019 - 2024. All rights reserved.