我需要选择其字段符合简单数学表达式的所有产品(在我的情况下,除法)。
示例查询:
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是否适合货币价值..
有什么建议吗?因为以上对我不起作用。 (返回零结果)
答案 0 :(得分:11)
这可能是一个舍入问题(正如@Justin所说) 试试这个:
SELECT * FROM cars WHERE (1.0 * retail_price / invoice_price) > 1.05
这个想法是强制引擎管理浮点数(乘以浮点数1.0)。
<强>更新强>:
我看到你刚刚将数据类型编辑为VARCHAR
无论如何,结果(对我而言)是相同的:看http://sqlfiddle.com/#!2/298d3/2