【发布时间】:2020-08-19 22:29:44
【问题描述】:
首先,我们使用的是 Azure SQL DB(现在已经说过了)。
我们有一个存储数学字符串的计算表。 我试图通过 Exec 命令从数学字符串中获取答案。
简单示例EXEC ('select ' + '500*5000') 工作正常。
EXEC ('select ' + '7500000*10000000000') 也可以正常工作。
然而
EXEC ('select ' + '75000*1000000') 产生算术溢出错误
嗯?
第二个例子不是也导致 bigint 吗?为什么那个没问题?
据我所知,有一个后台进程可以动态确定结果数据类型的大小。在任何情况下,我们都需要确保不会因为溢出而导致计算错误。
我的问题是如何在任何评估中强制使用 bigint?
我试过了
EXEC ('select cast(' + '750000*1000000' + 'as bigint)')
和
EXEC ('select convert(bigint,' + '750000*1000000' + ')')
或者,我们可以调整一个设置来告诉服务器在评估中默认使用 bigint 吗?
【问题讨论】:
标签: sql-server tsql azure-sql-database