首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SQL中将Varchar转换为Decimal错误

问在SQL中将Varchar转换为Decimal错误
EN

Stack Overflow用户
提问于 2019-01-15 19:24:26
回答 2查看 303关注 0票数 1

我将csv文件上传到Server中,本应为Int或Decimal的列只是varchar,我正在尝试将16.50转换为0.165或6.40转换为0.064。我创建了一个新表并尝试转换数据,这样做:

代码语言:javascript
复制
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时,转换失败。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-15 19:28:40

您需要在除法之前将其转换,或者使用100.0。它试图转换为INTEGER,因为100是一个整数。

代码语言:javascript
复制
select '16.50' / 100.0
select try_convert(decimal(4,2),'16.50') / 100

如果您知道所有的varchar值都可以隐式转换为十进制,那么只需:

代码语言:javascript
复制
update bplateinfo2018
  Set [New O Swing Percentage] = [Original O Swing Percentage] / 100.0

否则,您将需要TRY_CONVERT或类似的东西。

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2019-01-15 19:32:02

不能将表示十进制的varchar值直接转换为int (int不是decimal)。这似乎是您在这里产生的误解,因为您的标题是“在SQL中将Varchar转换为Decimal错误”,尽管错误是“将varchar值16.50转换为数据类型int__时失败”。

例如,下面的语句将失败:

代码语言:javascript
复制
SELECT CONVERT(int, '16.50');

相反,您需要先转换为十进制,然后再转换为int。

代码语言:javascript
复制
SELECT CONVERT(int,CONVERT(decimal(4,2),'16.50'));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54205565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档