如何在SQL SELECT查询中做简单的数学运算?

问题描述:

我需要选择所有产品的字段符合简单的数学表达式(在我的情况下,除法)。如何在SQL SELECT查询中做简单的数学运算?

实例查询:

SELECT * FROM cars WHERE (retail_price/invoice_price)>1.05 

需要灵活:
我在这里需要的灵活性,因为我希望能够来定义表达式作为字符串别的地方,只是把它扔进WHERE子句之后的SQL查询。

$expression = "(retail_price/invoice_price)>1.05"; 
$query = "SELECT * FROM cars WHERE ".$expression." LIMIT 1"; 

注:
- retail_price的数据类型为VARCHAR
- invoice_price的数据类型为VARCHAR
- 不知道VARCHAR是适合虽然货币价值..

任何建议?因为上述不适合我。 (返回零结果)

+3

什么问题?这正是你如何去做的。如果你没有得到任何结果,那么你就没有1.05的销售/发票价格比率。 – 2012-07-15 23:39:03

+2

retail_price和invoice_price的数据类型是什么?这可能是一个舍入问题,如果你没有得到应有的结果。 – 2012-07-15 23:42:07

+0

表达式应该匹配我表中的数据。但我会仔细检查。很高兴知道表达式本身是正确的。谢谢。 – sean 2012-07-15 23:42:51

这可能是一个舍入问题(正如@Justin所说)。
试试这个:

SELECT * FROM cars WHERE (1.0 * retail_price/invoice_price) > 1.05 

的想法是给力引擎来管理浮动(浮法数乘以1.0)。

UPDATE
我看到你刚才编辑的数据类型为VARCHAR。
总之结果(对我来说)是一样的:看看http://sqlfiddle.com/#!2/298d3/2

+0

是的。你是绝对正确的。查询返回的结果没有问题。顺便说一句很棒的网站(sqlfiddle)!书签。问题出在脚本的不相关部分的其他地方。哈。谢谢Marco和其他人! – sean 2012-07-16 00:11:44