我试图弄清楚为什么出现以下错误。当我试图告诉它转换为小数时,为什么要尝试将其转换为int?
将varchar值'938.00'转换为数据类型int时转换失败。
这是业务目标。如果我过滤掉该时间段,它确实可以工作,但是将数据导入Excel时需要该时间段。
convert(decimal(9,2),'"+$WorkSheet.Range('D13').Text.replace("'","").replace(" ","").replace("$","").replace(",","").replace("-","")+"'+0)
答案 0 :(得分:0)
大概是因为您使用的是+ 0
,这意味着+
被视为加法而不是串联。我认为简单的解决方案将被替换:
replace('convert(decimal(9,2), @val)',
'@val',
$WorkSheet.Range('D13').Text.replace("'", "").replace(" ", "").replace("$", "").replace(",", "").replace("-", "")
)
答案 1 :(得分:0)
这是我想出的。它看起来粗糙,但似乎可以工作。测试将继续。再次感谢。
convert(decimal(9,2), ISNULL(NULLIF('"+$WorkSheet.Range('D14').Text.replace("'","").replace(" ","").replace("$","").replace(",","").replace("-","")+"', ''),'0')),