bho*_*ole 6 c# sql biginteger sql-server-2008
如何92233720368547758079223372036854775807922337203699在SQL Server 2008中存储大量数据?Max bigint允许的是9223372036854775807
我想我可以采取的一种方法是执行以下操作,将数字存储为varchar(50)C#代码我可以做的
BigInteger x = BigInteger.Parse("922337203685477580792233720368547758079223372036");
Run Code Online (Sandbox Code Playgroud)
非常感谢任何反馈.谢谢
Ant*_*ram 14
在这种情况下问自己的一个相关问题,以及我在评论中问你的问题如下:
你真的很大的数字是用作算术的数字,还是只是一些标识符?
你回答了
根据我的理解,该号码是从某个政府机构的Oracle系统发出的唯一标识符,它的长度可以是0到50,我们需要将它存储在我们的应用程序中
这应该会引导您找到与尝试将数据存储为数字不同的答案.
如果它只是一个标识符,那么您实际上不需要将其存储或视为数字.从数据的角度来看,由数字组成的字符串,例如美国的社会安全号码或信用卡和贷款的帐号都不是真正的数字.它们是标识符字符串.以这种方式存储它们.
根据您的评论,如果您不对其进行任何算术运算(即,它只是一个标识符),则它不必一定是-也许根本就不应该是-一个数字。只是把它作为一个字符串两个数据库和消费应用程序,然后继续前进。
但是,对于将来有实际数字的访客,我可以想到两种选择:
varchar和BigInteger.Parse(string)/BigInteger.ToString()varbinary和BigInteger..ctor(byte[])/BigInteger.ToByteArray()进行二进制路由可能会带来性能或空间上的好处,但也可能会限制需要使用该值的其他应用程序。恕我直言,不过,除非您每秒要解析其中的许多内容,否则我怀疑这是否真的值得麻烦-而且这些天的存储价格便宜。
此外,如今,字符串似乎已成为事实上的序列化方法(例如XML或JSON),并且存储在中varchar也将使您可以立即使用SQL Server的XML功能。
第三种选择是专门创建一个CLR类型来包装BigInteger,因此您可以在SQL Server中直接使用它(即用于比较和算术)。同样,不确定是否值得这样做。