在 sql 查询中使用 bigint 时得到错误的结果

Posted

技术标签:

【中文标题】在 sql 查询中使用 bigint 时得到错误的结果【英文标题】:Getting wrong result when using bigint in sql query 【发布时间】:2013-05-03 05:00:00 【问题描述】:

我在查询中通过了 AmountDue 以下,但得到了错误的结果。 AmountDue 数据类型是浮点数。

AmountDue: 2412880.28
AmountDue: 561.06

我的查询:

select CONVERT(varchar,(select convert(bigint,AmountDue*100)))
from dbo.tblBidResults

我得到的结果是错误的:

241288027
56105

正确结果:

241288028
56106

【问题讨论】:

AmountDue 是什么数据类型? AmountDue 数据类型为浮点数 【参考方案1】:

尝试转换为数字而不是 bigint:

DECLARE @temp float
set @temp = 2412880.28
SELECT CONVERT(varchar,(CONVERT(numeric(27,0),@temp*100)))

这里有一个good post 说明了这个问题的原因。

【讨论】:

【参考方案2】:
DECLARE @temp float
set @temp = 2412880.28
select convert(varchar,convert(decimal(9,0),@temp*100))

SQL FIDDLE

【讨论】:

以上是关于在 sql 查询中使用 bigint 时得到错误的结果的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate本机查询可选参数throws'运算符不存在:bigint = bytea'

Amazon Athena - 在基本 SQL WHERE 查询中无法解析列

GraphQL 错误:Int 类型的变量 junctionId!用于期望 bigint 的位置

使用 T-SQL 查询 XML 节点得到错误的结果集

为啥在将 bigint 数插入 bigint 列时出现算术溢出错误?

编写查询时的 SQL 语法错误