![](/img/trans.png)
[英]Arithmetic overflow error converting varchar to data type numeric -error
[英]Error: Arithmetic overflow error converting varchar to data type numeric
select distinct f1.[record] from [field] f1 where ((ABS((Cast((Select [value] from dbo.getFieldTopTable(f1.[record], 'ar_essay1_read1')) as Decimal(5,3))) - (Cast((select [value] from dbo.getFieldTopTable(f1.[record], 'ar_essay1_read2')) as Decimal(5,3)))) > 1.0)
or (ABS((Cast((Select [value] from dbo.getFieldTopTable(f1.[record], 'ar_essay2_read1')) as Decimal(5,3))) - (Cast((select [value] from dbo.getFieldTopTable(f1.[record], 'ar_essay2_read2')) as Decimal(5,3)))) > 1.0)
or (ABS((Cast((Select [value] from dbo.getFieldTopTable(f1.[record], 'ar_essay3_read1')) as Decimal(5,3))) - (Cast((select [value] from dbo.getFieldTopTable(f1.[record], 'ar_essay3_read2')) as Decimal(5,3)))) > 1.0)
or (ABS((Cast((Select [value] from dbo.getFieldTopTable(f1.[record], 'ar_essay4_read1')) as Decimal(5,3))) - (Cast((select [value] from dbo.getFieldTopTable(f1.[record], 'ar_essay4_read2')) as Decimal(5,3)))) > 1.0))
这些字段中存储的数据是真实设置的,值范围从.001到4.00(应该是int吗?)
我们正试图查找2个分数之差大于1的记录
我们还尝试了将_强制转换为十进制,但没有精确度,并且省略了应该在查询中的记录...
有什么我们不考虑的吗?
您根本不需要dbo.getFieldTopTable()
这些值,问题很可能是dbo.getFieldTopTable()
函数返回的值的数据类型。 确保它返回带小数的值。
小数点右边的数字不应引起截断错误。 尝试DECIMAL(9,3)。 那消耗的内存与DECIMAL(5,3)相同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.