declare @asnPrecision as int
declare @afConvertValue as float
set @afConvertValue=1254008652.03652
set @asnPrecision=2select将afConvertValue至少保留2位,最多保留4位该怎么写呢?
也就是说
如果afConvertValue =1.20则返回1.20
如果afConvertValue =1.2则返回1.2
如果afConvertValue =1.233则返回1.233
如果afConvertValue =1.220202则返回1.2202

解决方案 »

  1.   

    round(afConvertValue,4)就可以了啊
    不足四位就不四舍五入
      

  2.   

    create table #t(afConvertValue numeric(20,6))
    insert into #t(afConvertValue)
    select 1.20
    union all select 1.2
    union all select 1.233
    union all select 1.220202
    select round(afConvertValue,4)
    from #t
    drop table #t
      

  3.   

    啊!我的例子写错了一个。至少保留2位的话。如果afConvertValue =1.2则应该返回1.20
      

  4.   

    不懂但gahade(东北爷们) 
    的例子在2005下面有问题。。还是6位的说。。
      

  5.   

    顶上去!另外:以下两种处理方法哪个有效率呢?如果返回结果是10000条数据的话。1。我在sql中用round,convert等函数将所有数据处理成保留4位小数。然后在程序中显示的时候再把实际是3位或者2位小数后面的0抹掉。把1位小数或者没有小数的保留2个0。2。在sql中不再处理。提取出原样数据。完全在程序中处理。
      

  6.   


    declare @i float 
    set @i =12.30
    select (cast(@i as money))
    全部保存 4 位算啦。