如何更改存储列数据中的小数位?

时间:2014-10-09 19:00:56

标签: sql-server tsql

如何将小数位移到正确的两个位置,并且只保留一个小数点?

当前数据:

4 Year Grad Rate
0.799204771371769

我需要在列中存储以下内容:

4 Year Grad Rate
79.9

我想我可以使用CAST让它以我想要的方式显示,但我想改变数据在列中的存储方式,只有2位数,小数点,然后是一位数。

感谢您的帮助!

4 个答案:

答案 0 :(得分:1)

乘以100移动小数位,然后施放以减少不必要的休息

select cast(0.799204771371769 * 100 as decimal(10,1))

SQLFiddle demo

要更新您的数据,您可以

update your_table
set your_column = cast(your_column * 100 as decimal(10,1))

答案 1 :(得分:1)

非常确定您可以将列更改为Decimal(9,1)
安全投注是创建新列Decimal(9,1)

我认为你可以set newCol = oldCol * 100.0;

newCol = oldCol * 100D;

答案 2 :(得分:0)

您可以在SQL SERVER中使用数字数据类型

Numeric(p,s)
  

p =将存储的最大小数位数,   小数点的左侧和右侧。

     

s =将存储在右侧的小数位数   小数点。

declare @val NUMERIC(18,2)=0.799204771371769
    select @val

编辑:

declare @val NUMERIC(18,1)=0.799204771371769*100
select @val

答案 3 :(得分:-1)

试试这个:

SELECT ROUND(0.799204771371769 * 100, 1)