我正在尝试使用代码添加预测的总和
select
sum(cast(replace(replace(ZFREEGOOD, ',', ''), ' ', '') as decimal(22,8)))
from
TEMP_GBR_History_1611
我不断收到错误消息
将数据类型nvarchar转换为数字时出错。
我使用了case语句来找出哪些行失败。这些是其中一些
获得解决方案会很有帮助
答案 0 :(得分:2)
一种选择是使用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 NULL
答案 1 :(得分:2)
您不处理空白情况,这适用于测试数据:
select sum(cast(case when replace(replace(ZFREEGOOD,',',''),' ','') = '' then '0' else replace(replace(ZFREEGOOD,',',''),' ','') end as decimal(22,8))) from TEMP_GBR_History_1611