Sql server 如何将十进制数添加到存储为文本的数字中?

Sql server 如何将十进制数添加到存储为文本的数字中?,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我在varchar(50)列的表中存储了一些货币值。不幸的是,我无法更改导入的数据,并且存储的值没有小数点。我需要从varchar列中获取一种格式的值,在这种格式中,我可以将它们除以100以添加小数。如果我能更新列以添加小数点,那就太棒了 我尝试过转换和强制转换,但当我除以100时,它似乎只是截断最右边的两个数字,而不是实际执行除法 最终,我只需要在这一列中添加小数点,我完全感到困惑 任何帮助都将不胜感激 提前谢谢 这就是您想要的: declare @Currency as varchar(

我在varchar(50)列的表中存储了一些货币值。不幸的是,我无法更改导入的数据,并且存储的值没有小数点。我需要从varchar列中获取一种格式的值,在这种格式中,我可以将它们除以100以添加小数。如果我能更新列以添加小数点,那就太棒了

我尝试过转换和强制转换,但当我除以100时,它似乎只是截断最右边的两个数字,而不是实际执行除法

最终,我只需要在这一列中添加小数点,我完全感到困惑

任何帮助都将不胜感激

提前谢谢

这就是您想要的:

  declare @Currency as varchar(50)
  set @Currency = 8000;

  declare @CurrencyDecimal as decimal(18,2) 
  set @CurrencyDecimal = @Currency /100

  select cast(@CurrencyDecimal as varchar(50))
和/或:

  select cast(@Currency / 100 as decimal(18,2) )

  select convert(DECIMAL(18,2),@Currency / 100)
如果您需要更新:

 update t1
 set Currency = cast(Currency as decimal(18,2) )
 where = -- some condition


我认为您可以使用STUFF函数响应此请求: “如果我能更新列以添加小数点,那就太棒了。”


非常感谢!这个把戏做得很漂亮!不过,我承认我不理解它为什么会起作用。你能告诉我为了更好地理解这一点我应该学习什么概念吗?(我对这个网站还比较陌生,所以尽管我对你的答案投了更高的票,但他们还没有计算我的票数。):)你需要了解数据类型以及如何转换它们。。我已经用两个链接编辑了我的答案!非常感谢!
UPDATE [table] SET [column] = STUFF([column],LEN([column])-1,0,'.')