尝试在转换之前将字符串强制转换为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