2013-12-17 90 views
0

我正在使用Google雲端mysql v.5.5進行基於Java的開發。Java Mysql按價格排序

我想按價格排序產生的數據,但直到現在,價格arent正在訂購。

比方說我的查詢是:

SELECT ID, ITEM_NAME, PRICE FROM REFERENCES .... ORDER BY PRICE ASC 

表引用有4個元素。這些元素的價格是:1,12,12.2和2

當我運行查詢什麼,我得到的是:

1 
12 
12.2 
2 

而且我應該得到:

1 
2 
12 
12.2 

任何想法可能會發生什麼?

預先感謝您的寶貴時間,

親切的問候,

UPDATE1:爲PRICE列字段類型爲VARCHAR作爲客戶端前提條件,所以沒有太多的做這件事。

UPDATE2:價格值包含','而不是通常的'。'。 ,所以即使到目前爲止我所得到的回覆結果仍然不那麼雜亂,反而凌亂。 :(

UPDATE3:另外,我試圖做到以下幾點:ORDER BY更換(PRICE, '', '')+0 ASC但是這也已經被證明是不成功:(

+0

您應該將價格存儲爲'DECIMAL',而不是'VARCHAR'或任何您擁有的。否則,這是你可以面對的最小問題。 –

+0

將它們存儲爲VARCHAR其客戶需求比我自己的想法更多。而現在我正面臨着這個問題。 :( – Catersa

+0

請注意這樣的要求:遲早你會發現有一個'Ask Jim'的價值。當你需要申請稅或計算購物車總數時,你會發現......但我想它可能會更糟糕:客戶端本來可能想要使用產品標籤的掃描圖片。 –

回答

0

我。打賭的價格列不是數字,但字母。在這種情況下,排序順序是字母,讓你獲得

12.2

,因爲1 < 212 < 12.2

2

聽起來像price被存儲爲一個字符串,而不是一個數字。

你可以試試:

order by price + 0 

這將其轉換爲數字。

2

試試這個:

SELECT ID, ITEM_NAME, PRICE FROM REFERENCES .... 
ORDER BY cast(PRICE as unsigned) ASC 
0
  • 首先要知道.. 谷歌雲SQL支持和使用的的MySQL 5.5所有功能。
  • MYSQL將查詢結果以升序排列ORDER BY default。
  • 你必須讓你的價格FLOAT

SELECT ID,ITEM_NAME,價格從參考....按價格排序ASC

或者乾脆

SELECT ID,ITEM_NAME,價格從參考....按價格排序

並且輸出 - 12.2