【发布时间】:2016-10-11 01:17:58
【问题描述】:
我使用下面的查询将 varchar(255) 的“Characteristic__c”列转换为 DECIMAL(22,8)。 Characteristic__c 的值被指定为简单的 0.0,但它仍然会导致错误“将 varchar 转换为数据类型数字的算术溢出错误。”。不知道原因,谢谢帮助。
SELECT CONVERT(DECIMAL(22,8) , Characteristic__c) FROM [ODS].[dbo].
[Scorecard_Details__c]
WHERE Attribute__c='Employment Duration' and Characteristic__c=0.0 and
WOE__c=0
【问题讨论】:
-
varchar(255)必须太宽,无法放入decimal(22, 8)。仅仅因为给定的 值 是0.0并不意味着它占用的空间反映了该数量。 -
我相信问题出在 WHERE 子句上。你会得到同样的错误:
select 1 from (values('1')) t(a) where t.a = 0.0;。修复可能取决于您的数据是什么样的。 -
TBH 你的列名看起来很难看
标签: sql-server