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

eri*_*ric 3 php mysql sql

我需要选择其字段符合简单数学表达式的所有产品(在我的例子中,除法).

示例查询:

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