sql-server - 如何在 SQL Server 中将 varchar 转换为浮点数?我收到一个错误
问题描述
我正在尝试将临时表 ( AmazonSales_temp
) 中的数据插入到我的主表 ( AmazonSales
) 中。临时表的所有列都是 type varchar
。主表有一些float
和varchar
值。我正在尝试使用存储过程插入。
当我执行存储过程时,我得到一个错误:
消息 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
。
推荐阅读
- ios - 使用 numberOfRowsInSection 在 Swift 中的 void 函数中出现意外的非 void 返回值
- ruby-on-rails - 在 Ruby on Rails 中使用强参数验证输入文件参数
- python - Reducing entry letters using tkinter not working
- javascript - 在 javascript 标记中,在 ajax/jquery 代码中显示逗号而不是点
- html - Horizontal lines behind buttons HTML/CSS
- arrays - PL/SQL - Declare a record where keep records of a table and an operation?
- python-3.x - 从 db 文件转换为 csv 并访问列式数据时,列表索引超出范围
- java - 在服务级别启动浏览器时,applet 调用的 Java 运行时不会观察所有 JRE 配置
- python - 我的功能太长了。为了通过课程,我需要 < 18 行
- elasticsearch - ElasticSearch中关键字和文本之间的区别