表中有两个字段a,b 都是int类型a  b  
--------
1  1
1  2
2  1现在我想要查询a-b的值,如果a-b<0的话就用0代替,并把查询结果转化为float类型
也就是要得到下面这个结果:a  b   c
---------
1  1  0.0
1  2  0.0
2  1  1.0有没有类似于isnull()之类的可以检查运算结果的函数,还望各位前辈指教

解决方案 »

  1.   

    select a,b,(cast((case when a-b<0 then 0 else a-b end) as float)) as c
    from tb
      

  2.   

    select a,b,case when a<b then 0 else (a-b)*1.0 end as c
    from tb
      

  3.   

    select
     a,b,(cast((case when a-b<0 then 0 else a-b end) as float)) as c
    from
     tb
      

  4.   

    float型的 应该不会是一位小数 啊
      

  5.   


        SELECT a,b,[c]=CASE WHEN a-b<0 THEN CAST(0 AS FLOAT) ELSE a-b END
        FROM tb
      

  6.   


    SQL中也存在隐式转换?
    c列是什么类型的?
      

  7.   

    if object_id('[tb]') is not null drop table [tb]
    go
    create table [tb]([a] int,[b] int)
    insert [tb]
    select 1,1 union all
    select 1,2 union all
    select 2,1
     
    select *,c=case when a<b then 0.0 else a-b end
    from tb/**
    a           b           c
    ----------- ----------- ---------------------------------------
    1           1           0.0
    1           2           0.0
    2           1           1.0(3 行受影响)
    **/
      

  8.   


    刚刚翻了下书
    float 七位
    double 十五位 如果c列的值是0.1234567
    我如何截取我想要的位数呢?如果截取了小数点后4位,那么截取的值是0.1234还是0.1235?请黛玉前辈指点~