2012-12-20 71 views
1

我有一個表如下ID是一個數字列,總計爲VARCHAR(20) - 表名稱是訂單:MySQL的 - 如何讓VARCHAR列的最大值

ID  Total 

1  $10 

2  $1,000 

3  $1500.50 

4  300 

5  20.50 

6  -80 

通過

SELECT statement I would like to get the Id of the highest total i.e 3. 

SELECT ID, MAX(CONVERT(Total, SIGNED INTEGER)) AS total FROM orders 

給我總計最高但ID不正確。

我想忽略美元符號($)和逗號(,)

回答

3

只使用 MAX(CONVERT(replace(replace(total,',',''),'$',''), SIGNED INTEGER)) AS total

+0

這個答案會更好,如果轉化率分別爲一個數值,如浮動或真實的,因爲有關數字有小數點。 –

1

錢存放量的VARCHAR領域聽起來像引狼入室。

在轉換爲數字之前,您可以嘗試使用REPLACE刪除前導$,但這仍然是錯誤的操作。

請重新修改您的模式並將貨幣金額存儲在適當類型的列中,並且不會出現這些問題。

2

您的查詢應該是這樣的。它工作,我也使用它。

試試這個:

SELECT MAX(CONVERT({column_name}, SIGNED INTEGER)) AS {column_name or xyz_name} from {table_name}