不幸的是,我有一些不良数据,需要解决它。我在电子表格中有一个包裹列,其中包含一些无意中转换为浮点数的包裹。我发布了一个问题来解决这个问题处理混合 varchar 和 float 数据类型的 sql 列 但是,现在当我尝试以下代码时出现错误:
SELECT CAST(CAST(CAST([Parcel Number 2(max)] AS FLOAT) AS DECIMAL) AS NVARCHAR(255))
FROM XLSIMPORT WHERE [Parcel Number 2(max)] = '1.4515020001e+012'
我得到的错误是:
Msg 8115, Level 16, State 6, Line 41
Arithmetic overflow error converting float to data type numeric.
该错误似乎表明
DECIMAL
未使用正确的精度和比例定义数据类型。默认值为DECIMAL(18,0)
,但您的默认值可能发生了什么事?当我像您一样运行下面的查询时(只是更改为表变量并添加了精度和比例),我没有收到任何错误。作为一个仅供参考,如果我尝试
DECIMAL(12,0)
.