尝试在转换之前将字符串强制转换为float:
SELECt ConVERT(numeric(16,0), CAST(TOKEN AS FLOAT))FROM MULTICURRENCY_CHECK
- 看到这个小提琴。
我不知道您的XML源中这些数字的格式是什么,但是通过提供的数据,您最终会得到33733,例如后面是一堆零。如果您的XML精度更高,也许您应该调整导入设置以保持此精度,而不是尝试在数据库中处理精度。
编辑:
尝试使用
ISNUMERIC来测试您的字符串,以避免出现转换错误。添加列的原始输出将使您能够检查哪个值转换失败(即转换为0)。
SELECt TOKEN, ConVERT(NUMERIC(16, 0), CAST(CASE WHEN ISNUMERIC(TOKEN) = 1 THEN TOKEN ELSE 0 END AS FLOAT)) FROM MULTICURRENCY_CHECK



