我将csv文件上传到Server中,本应为Int或Decimal的列只是varchar,我正在尝试将16.50转换为0.165或6.40转换为0.064。我创建了一个新表并尝试转换数据,这样做:
alter table bplateinfo2018
add [New O Swing Percentage] as decimal(5,4)
update bplateinfo2018
Set [New O Swing Percentage] = [Original O Swing Percentage] / 100我知道错误了
“当将varchar值16.50转换为数据类型int时,转换失败。
发布于 2019-01-15 19:28:40
您需要在除法之前将其转换,或者使用100.0。它试图转换为INTEGER,因为100是一个整数。
select '16.50' / 100.0
select try_convert(decimal(4,2),'16.50') / 100如果您知道所有的varchar值都可以隐式转换为十进制,那么只需:
update bplateinfo2018
Set [New O Swing Percentage] = [Original O Swing Percentage] / 100.0否则,您将需要TRY_CONVERT或类似的东西。
update bplateinfo2018
Set [New O Swing Percentage] = [Original O Swing Percentage] / 100.0
where try_convert(decimal(16,4),[Original O Swing Percentage]) is not null发布于 2019-01-15 19:32:02
不能将表示十进制的varchar值直接转换为int (int不是decimal)。这似乎是您在这里产生的误解,因为您的标题是“在SQL中将Varchar转换为Decimal错误”,尽管错误是“将varchar值16.50转换为数据类型int__时失败”。
例如,下面的语句将失败:
SELECT CONVERT(int, '16.50');相反,您需要先转换为十进制,然后再转换为int。
SELECT CONVERT(int,CONVERT(decimal(4,2),'16.50'));https://stackoverflow.com/questions/54205565
复制相似问题