日期:2014-05-18  浏览次数:20403 次

为什么这句查询不行?
有张表a,数据如下:
    s                   b
    50               69
    260             295

要求是b字段比s字段多60%的列出来
select   *   from   a   where   b> s*(1+0.6)

但如果用下面的为什么不行?

select   *   from   a   where   b> s*(1+60/100)

------解决方案--------------------
因为两个整数的商依然是一个整数, 60/100 得到的结果是一个整数,即0。

改成这样:60.0/100


------解决方案--------------------
select * from a where b> s*(1+60.0/100.0)

------解决方案--------------------
上面错了

一楼正解,如果你想两个整数相除留小数位,把除数和被除数中一个转换为float型或其他浮点类型;例如:
select * from a where b> s*(1+(cast 60 as float)/100)