我正试图使用一个代码添加我的预测的总和。
select
sum(cast(replace(replace(ZFREEGOOD, ',', ''), ' ', '') as decimal(22,8)))
from
TEMP_GBR_History_1611我一直在犯错误
将数据类型nvarchar转换为数字时出错。
我使用一个case语句来判断哪些行失败了。这些就是其中的一些
对找到解决方案有很大帮助

发布于 2018-11-27 20:09:20
您不是在处理空白情况,这适用于测试数据:
select sum(cast(case when replace(replace(ZFREEGOOD,',',''),' ','') = '' then '0' else replace(replace(ZFREEGOOD,',',''),' ','') end as decimal(22,8))) from TEMP_GBR_History_1611发布于 2018-11-27 20:08:13
一种选择是使用try_convert(money,...),它倾向于稍微宽容一点。
示例
Select AsMoney = try_convert(money,' 27,300') -- works!
,AsInt = try_convert(int,' 27,300')
,AsDec = try_convert(decimal(10,2),' 27,300')
,AsFloat = try_convert(float,' 27,300')返回
AsMoney AsInt AsDec AsFloat
27300.00 NULL NULL NULLhttps://stackoverflow.com/questions/53507273
复制相似问题