我需要选择其字段符合简单数学表达式的所有产品(在我的例子中,除法).
示例查询:
SELECT * FROM cars WHERE (retail_price/invoice_price)>1.05
Run Code Online (Sandbox Code Playgroud)
需要灵活:
我需要灵活性,因为我希望能够将表达式定义为其他地方的字符串,并在WHERE子句之后将其弹出到SQL查询中.
$expression = "(retail_price/invoice_price)>1.05";
$query = "SELECT * FROM cars WHERE ".$expression." LIMIT 1";
Run Code Online (Sandbox Code Playgroud)
注意:
- retail_price的数据类型为VARCHAR
- invoice_price的数据类型为VARCHAR
- 不确定VARCHAR是否适合货币值,但..
有什么建议?因为以上对我不起作用.(返回零结果)
Mar*_*rco 11
这可能是一个舍入问题(正如@Justin所说).
试试这个:
SELECT * FROM cars WHERE (1.0 * retail_price / invoice_price) > 1.05
Run Code Online (Sandbox Code Playgroud)
想法是强制引擎管理浮点数(浮点数乘以1.0).
更新:
我看到你刚刚将数据类型编辑为VARCHAR.
无论如何,结果(对我来说)都是一样的:看看http://sqlfiddle.com/#!2/298d3/2