我正在尝试将数据从临时表(AmazonSales_temp
(插入到我的主表(AmazonSales
(中。临时表的所有列都是类型varchar
。主表具有一些float
和varchar
值。我正在尝试使用存储过程插入。
当我执行存储过程时,我得到一个错误:
Msg 8114,级别16,状态5,过程usp_LoadAmazonSales,行16[批处理开始行2]
将数据类型varchar转换为浮动时出错
我尝试了所有可能的方法。知道怎么解决这个问题吗?需要帮助。
INSERT INTO AmazonSales
SELECT
[ProductTitle],
CAST(Revenue AS FLOAT),
CAST(RevenueTotal AS FLOAT),
CAST(RevenuePriorPeriod AS FLOAT),
CAST(RevenueLastYear AS FLOAT)
FROM
AmazonSales_temp
您的语法建议使用SQL Server。使用TRY_CAST()
:可以消除错误
insert into AmazonSales
SELECT [ProductTitle],
TRY_CAST(Revenue AS FLOAT),
TRY_CAST(RevenueTotal AS FLOAT),
TRY_CAST(RevenuePriorPeriod AS FLOAT),
TRY_CAST(RevenueLastYear AS FLOAT)
FROM AmazonSales_temp;
也就是说,这只是掩盖了错误。它插入NULL
值。你需要找到问题所在。为此,运行这样的查询来查找有问题的记录:
SELET a.*
FROM AmazonSales_temp a
WHERE TRY_CAST(Revenue AS FLOAT) IS NULL AND Revenue IS NOT NULL;
我还建议您不要将FLOAT
用于货币价值。它们被更好地表示为DECIMAL
/NUMERIC
。