如何在 SQL Server 中存储无符号 64 位整数?

发布于 2024-07-10 08:37:02 字数 92 浏览 4 评论 0原文

我使用的应用程序使用相当大的数字,并且我需要将数据存储为无符号 64 位整数。 我更喜欢只存储它,而不用担心位操作或类似的事情,这样不同的程序可以以不同的方式使用数据。

I work with an application which uses rather big numbers and I need to store data as an unsigned 64-bit integer. I prefer to just store it without worrying about bit manipulation or anything like that so different programs can use the data in different ways.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

陌路黄昏 2024-07-17 08:37:02

您可以将值存储为 NUMERIC 类型,scale 为 0,这将保留所需的integer 语义。 NUMERIC 类型允许负数,但您可以设置一个约束来要求正整数。

NUMERIC 的最大精度 为 38 位十进制数字。 2**64 大约有 18 或 19 位十进制数字,因此 NUMERIC(19,0) 可能适合此数据。

You can store the value in a NUMERIC type with a scale of 0, which will retain the integer semantics required. The NUMERIC type will allow negative numbers, although you could set up a constraint to require positive integers.

The maximum precision for NUMERIC is 38 decimal digits. 2**64 is somewhere around 18 or 19 decimal digits, so NUMERIC(19,0) would likely work just fine for this data.

夏了南城 2024-07-17 08:37:02

AFAIK,您必须创建一个自定义类型。 指针这里虽然那篇文章更多的是限制负面数字...

AFAIK, You would have to create a custom type. Pointers here although that article is more for restricting negative numbers...

甜尕妞 2024-07-17 08:37:02

不要仅仅为了容纳无符号值而切换到更大的数据类型。 在 C# 中以及类似的其他语言,将 ulong(=无符号 64 位)值转换为 long(=有符号 64 位)并将其存储为 SQL-Server bigint(=有符号 64 位)。 返回时将 bigint 读取为 long 并用 C# 将其转换为 ulong。 所有值都保留,所有位都被使用,没有引入多余的位。

Do not switch to the larger datatype just to accomodate the unsigned value. In C# and likewise for other languages cast the ulong (=unsigned 64 bit) value to the long (=signed 64 bit) and store that as a SQL-Server bigint (=signed 64 bit). On the way back read the bigint as a long and C#-cast it to ulong. All values survive, all bits are used, no excess bits are introduced.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文