2012-02-22 56 views
0

我有表和列VARCHAR類型列ID 和值M1,M2,...,M9,M10,M11,M12 然後我使用查詢如何查詢從varchar類型獲取最大ID?

選擇MAX(ID)從表

但結果爲m9,因爲它認爲m10爲'm','1','0'作爲單獨的characters.so m9> m1(0)。

請幫忙?如何查詢從varchar類型獲取最大ID?

+1

字符串比較的定義與一個MySQL(以及大多數其他語言/平臺)使用的定義完全不同。試着首先定義你的比較算法(也就是說,給定兩個字符串,在你的意義上如何確定它們哪個更大)。在定義之前,我們不能說任何話;很可能是,試圖定義它,你會明白你的感覺是不一致的,並且字符串集不能根據你的意思排序,例如,因爲違反了傳遞性。 – penartur 2012-02-22 08:14:01

+0

如果所有的id都是'm1234567'類型,爲什麼不移除'm'並將列轉換爲'INT'? – 2012-02-22 09:29:24

回答

1
select max(CAST((substring(id,2)) AS DECIMAL(5,2))) from table; 

應該做的伎倆。

+0

對不起,應該是DECIMAL(5,0) – 2012-02-22 08:17:31

+0

其工作thxü – 2012-02-22 08:26:58

+0

如何獲得最大值如果值1, 2,3 ...,10,11,12與varchar類型? – 2012-02-22 08:30:26

2

您可以使用子實現了最大數量

select max(CAST((substring(id,2)) AS DECIMAL(5,0))) from table 

末還可以cancat與 'M'

select concat('m'+ max(CAST((substring(id,2)) AS DECIMAL(5,0)))) from table 
+0

它沒有工作:( – 2012-02-22 08:21:55

+0

@ N4ta-nata嘗試獲得想法。添加投射,然後它應該工作 – Kayser 2012-02-22 08:25:37