3

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

示例查询:

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 是否适合货币值。

有什么建议么?因为以上对我不起作用。(返回零个结果)

4

1 回答 1

11

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

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

这个想法是强制引擎管理浮点数(乘以浮点数 1.0)。

更新
我看到您刚刚将数据类型编辑为 VARCHAR。
无论如何结果(对我来说)是一样的:看看http://sqlfiddle.com/#!2/298d3/2

于 2012-07-15T23:47:25.390 回答