a:
select  csamt/slamt from doc01dt where uid=35348
结果为0.823076923076b:
select round ( csamt/slamt,3) from doc01dt where uid=35348
结果为0.823000000000本来想取a结果的小数点后三位(如b查询)但是后面出现了很多零,怎么把后面的0去了??????

解决方案 »

  1.   

    declare @a numeric(38,12)
    set @a=0.823076923076
    select cast(str(@a,20,3) as numeric(20,3))
    /*
    ---------------------- 
    .823(所影响的行数为 1 行)
    */
      

  2.   

    declare @a decimal(18,4)
    set @a=0.823076923076
    select cast(@a as numeric(20,3))
      

  3.   

    declare @a decimal(18,4)
    set @a=0.823076923076
    select cast(@a as decimal(18,3))
      

  4.   

    楼主可以参考:
    /*
    功能:把Money类型转换成nvarchar类型,保留三位小数,而且把数值后面多余的0去掉。
    如money类型的数值2.59100,转化成nvarchar(20)类型时,要求的结果是2.591
    如money类型的数值89.7800,转化成nvarchar(20)类型时,要求的结果是89.78
    设计:OK_008(DVD)
    时间:2006-07
    */
    CREATE TABLE #Temp([ID] int ,F1 nvarchar(20),F2 nvarchar(20),SMoney money,Dmoney money)
    INSERT INTO #Temp SELECT 1,'F1','F2',45.895,23.89000
    UNION SELECT 2,'F2','F3',45.895,234.67
    UNION SELECT 3,'F3','F4',25.835,32.123
    UNION SELECT 4,'F4','F5',13.7600,31.6754
    UNION SELECT 5,'F5','F6',34.783,78.345
    /*
    要求的结果如下:
    SMoney +'X'+ Dmoney 
    ------------------------------------------------------
    45.895X23.89
    45.895X234.67
    25.835X32.123
    13.76X31.675
    34.783X78.345
    */
    SELECT *,cast(SMoney as nvarchar(20)) FROM #Temp
    SELECT CAST(CAST(CAST(Smoney AS decimal(20,3)) AS float) as nvarchar)+'X'+
    CAST(CAST(CAST(Dmoney AS decimal(20,3)) AS float)AS nvarchar)
    FROM #Temp
    DROP TABLE #Temp
      

  5.   

    你用B查询出来后.也可以用subString来解决问题啊.
      

  6.   

    declare @a decimal(18,4)
    set @a=0.823076923076
    select str(@a,18,3)