2012-12-10 36 views
2

我不確定mysql查詢中是否有函數。我有一個價格表,列名是「價格」,其類型是VARCHAR()。我故意需要它作爲VARCHAR的原因很多。Mysql查詢比較字符串(varchar)爲整數

現在的問題是,如果我想搜索產品的最高價格,例如。 100000,但在我的專欄中,我們有不同類型的價格,下面的例子: -

  1. TBD 374,500
  2. 談判
  3. 299,000

我正在尋找像INTVAL()的函數,其將首先將字段值本身轉換爲INTEGER並進行比較。下面是我當前語句查詢: -

...,價格< = $ maximum_price

可能是這樣的應該是解決方案:INTVAL(價格)< = $ maximum_price

任何幫助或對解決方案的方向感激。歡呼聲

+3

清理數據庫中的價格並將其存儲爲數字數據類型,並使用單獨的標誌列來標識「可協商」等 –

回答

0

我認爲在PHP中沒有這樣的功能。你必須自己編寫硬編碼才能獲得合適的結果。

0

也許是這樣的:

SELECT ... WHERE CAST(SUBSTRING_INDEX(REPLACE(price, ',', ''), ' ', -1) AS SIGNED) <= $maximum_price 

但我以前的評論表示贊同,你最好重新考慮你的表。

4

試試這個...

字符串值爲「0」。其他值是排序..

SELECT CAST(price AS UNSIGNED INTEGER) price 
FROM tt order by price desc 
0

看起來像你有價格欄中的各種格式。我認爲你正在尋找比較列值是「TBD 374,500」,然後比較374500到100000

在這種情況下,簡單整型轉換將所有以char開頭的價格轉換爲0.您必須在mysql中創建自己的函數照顧所有格式。