gpt4 book ai didi

c++ - 长度大于 18 位的数字相减

转载 作者:行者123 更新时间:2023-11-28 06:43:15 25 4
gpt4 key购买 nike

好吧,这是一个艰难的问题,或者是一个愚蠢的问题,但它让我感到难过。我在 MSSQL 中处理序列号,它们以 nvarchar(50) 的形式存储在数据库中,为了对它们进行减法计算,我使用以下查询将它们转换为数据类型 BIGINT 并照常减去。

SELECT
SUM(
CAST(second_Serial_Nb AS BIGINT)-CAST(Serial_Nb AS BIGINT))
FROM [TEST].[dbo].[Serial_Table]
WHERE ID = '3'

此查询适用于长度最多为 18 位的序列号,但是一旦我将序列号的大小增加到长度为 20 位,我就会收到无法将数字转换为数据类型 bigint 的错误

Msg 8815, Level 16, State 2, Line 2
Arithmetic overflow error converting expression to data type bigint

是否可以使用不同的数字数据类型,例如 hexi 或其他类型。我也在使用 C++,也许我可以在那里创建一个函数而不是 SQL?

非常感谢任何意见或建议,感谢阅读。

最佳答案

BIGINT 只是一个普通的 64 位整数。它不是任意精度的整数。

如果你想存储更多的信息,你可以将其保存为字符串形式,或者使用NUMERICDECIMAL类型;这两种解决方案当然都比原生的固定宽度整数慢得多。

关于c++ - 长度大于 18 位的数字相减,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25522162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com