有一列值,可能是整数,可能是1位小数,也可能是多为小数,如果为多为小数,则保留两位小数,其余不变。
如:
test
 1
 1.5
 1.345
 1.34则输出为
test
 1
 1.5
 1.35
 1.34有好办法吗?PS:数字整体位数不确定

解决方案 »

  1.   

    硬写的话很麻烦,还要判断进位,有无好的方法?select 
    case when 
    CHARINDEX('.',cast(reverse(x) as varchar(50)),1)>3 
    then 
    LEFT(CAST(x as varchar(50)),CHARINDEX('.',cast(x as varchar(50)),1)+2) 
    else x end
    from t
      

  2.   


    这种可以哈。。select 
    case when 
    CHARINDEX('.',cast(reverse(x) as varchar(50)),1)>3 
    then 
    CAST(x as decimal(9,2)) 
    else x end
    from t
      

  3.   


    select 
        case when 
           round(x,0)=x    then 
            cast(round(x,0) as varchar(10))    else cast(round(x,2) as varchar(10)) end
    from t
      

  4.   

    select convert(float,round(x,2)) from t
      

  5.   

    select 
        case when 
            CHARINDEX('.',cast(reverse(x) as varchar(50)),1)>3 
        then 
            LEFT(CAST(x as varchar(50)),CHARINDEX('.',cast(x as varchar(50)),1)+2) 
        else x end
    from t这种好像不行哦,楼主要四舍五入!你的好像没有!!
      

  6.   

    输出时, 字段convert为decimal(18,2)就好了
      

  7.   

    select convert(decimal(18,2),value) from tableTest
      

  8.   


    --用ROUND ( numeric_expression , length)函数
    select convert(float,round(num,2)) from tab