我有一些货币值存储在varchar(50)列的表中。不幸的是,我无法改变导入的数据,并且存储的值没有小数点。我需要以一种格式从varchar列中获取值,我可以将它们除以100以添加小数。如果我可以更新列以添加小数,那将是非常棒的。
我尝试过CONVERTING和CASTing,但当我除以100时,它似乎只是截断最右边的两个数字,而不是实际执行除法。
最终我只需要在此栏中添加小数点,我完全感到困惑。
任何帮助都将非常感谢!!
提前致谢!
答案 0 :(得分:1)
这就是你想要的:
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
答案 1 :(得分:0)
我认为您可以使用STUFF函数来响应此请求: “如果我可以更新列以添加小数,那将是非常棒的。”
UPDATE [table] SET [column] = STUFF([column],LEN([column])-1,0,'.')