我在数据中保存字段类型为decimal(28,9),但是经过SQL语句计算后,得到的小数位数只有6位,请问有什么方法能得到9为或者更精确的结果

解决方案 »

  1.   

    create table #tb(num decimal(28,9))
    insert into #tb values(78)
    select * from #tb结果:
    -------------------------
    78.000000000
      

  2.   

    计算后会失去精度 楼主可以将结果转换
    select cast (计算结果 as decimal(28,9))
      

  3.   


    --我这可以
    declare @id  decimal(28,9)
    set  @id=123.123456789
    select @id
    /*
    ---------------------------------------
    123.123456789(1 行受影响)*/
      

  4.   

    其他位数都是9位小数,直接用1/3能够得到0.3333333333333的,但是用字段A/B进行计算就只能得到6位的数据(字段A和字段B的字段类型都是decimal(28,9))
      

  5.   

    declare @id  decimal(28,9)
    set  @id=123.123456789
    select @id*.0123
    /*---------------------------------------
    1.5144185185047(1 行受影响)*/
      

  6.   

    declare @s decimal(28,9)
    set @s='21.888888888'
    select 100.3/@s
    /*
    ---------------------------------------
    4.58223350272415161432382341*/
    select cast (100.3/@s as decimal(28,9))
    /*
    ---------------------------------------
    4.582233503*/
      

  7.   


    DECLARE @A NUMERIC(19,9),@B NUMERIC(19,9)
    SELECT @A=4.444444444,@B=1.000000001
    SELECT @A,@B,@A/@B,CAST(@A/@B AS NUMERIC(19,9))--4.444444444 1.000000001 4.4444444395555555604 4.444444440
      

  8.   

    declare 
    @a  decimal(28,9),
    @b  decimal(28,9)
    set  @a=123.123456789
    set  @b=456.123456789
    select @a/@b/*
    ---------------------------------------
    0.2699344989(1 行受影响)
    */
    --不知道你那为啥不行
      

  9.   


    DECLARE 
    @j decimal(28,9),
    @k decimal(28,9)
    set @j=123.456743214
    set @k = 456.123456789
    select @k/@j                                         
    ---------------------------------------- 
    3.6946014038(所影响的行数为 1 行)