2012-07-15 63 views
3

我需要選擇所有產品的字段符合簡單的數學表達式(在我的情況下,除法)。如何在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

回答

11

這可能是一個舍入問題(正如@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