如何在SQL Server中将varchar转换为float?我犯了一个错误



我正在尝试将数据从临时表(AmazonSales_temp(插入到我的主表(AmazonSales(中。临时表的所有列都是类型varchar。主表具有一些floatvarchar值。我正在尝试使用存储过程插入。

当我执行存储过程时,我得到一个错误:

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

相关内容

最新更新