我在转换一个decimal的列的时候,会将小数位取舍掉,如何保留小数?

解决方案 »

  1.   

    cast(列 as decimal(18,2))  ,后面表示小数位数
      

  2.   

    declare @dec dec(10,2)
    set @dec=12.34;
    select convert(varchar,@dec)------------------------------ 
    12.34可以保留啊
      

  3.   


    declare @str varchar(10)
    set @str='12.34';
    select convert(dec(10,2),@str)------------------------------ 
    12.34
      

  4.   


    declare @dec real
    set @dec=312296.5;
    select convert(varchar,@dec)试试这个
      

  5.   


    declare @dec real
    set @dec=312296.5;
    select convert(varchar,@dec)这样它就回舍去小数位了
      

  6.   

    declare @dec dec(18,1)
    set @dec=312296.5;
    select convert(varchar,@dec)------------------------------ 
    312296.5
      

  7.   

    declare @dec real
    set @dec=312296.5;
    select convert(nvarchar(20),cast(@dec as numeric(18,1)))
      

  8.   

    declare @dec real
    set @dec=312296.5;
    select convert(varchar,convert(dec(10,2),@dec))
      

  9.   

    呵呵,我其实也是用这种方法的,当我看到real和decimal有区别的时候我就知道肯定是这个问题,但问题是,如果不确定@dec的值的话,有什么好的方法就是取出原数字,原封不动得拿出来?
      

  10.   

    declare @dec real 
    set @dec=312296.5; 
    select convert(varchar,convert(dec(10,2),@dec)) 或用decimal(18,1)