我有表和列VARCHAR類型列ID 和值M1,M2,...,M9,M10,M11,M12 然後我使用查詢如何查詢從varchar類型獲取最大ID?
選擇MAX(ID)從表
但結果爲m9,因爲它認爲m10爲'm','1','0'作爲單獨的characters.so m9> m1(0)。
請幫忙?如何查詢從varchar類型獲取最大ID?
我有表和列VARCHAR類型列ID 和值M1,M2,...,M9,M10,M11,M12 然後我使用查詢如何查詢從varchar類型獲取最大ID?
選擇MAX(ID)從表
但結果爲m9,因爲它認爲m10爲'm','1','0'作爲單獨的characters.so m9> m1(0)。
請幫忙?如何查詢從varchar類型獲取最大ID?
select max(CAST((substring(id,2)) AS DECIMAL(5,2))) from table;
應該做的伎倆。
對不起,應該是DECIMAL(5,0) – 2012-02-22 08:17:31
其工作thxü – 2012-02-22 08:26:58
如何獲得最大值如果值1, 2,3 ...,10,11,12與varchar類型? – 2012-02-22 08:30:26
您可以使用子實現了最大數量
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
它沒有工作:( – 2012-02-22 08:21:55
@ N4ta-nata嘗試獲得想法。添加投射,然後它應該工作 – Kayser 2012-02-22 08:25:37
字符串比較的定義與一個MySQL(以及大多數其他語言/平臺)使用的定義完全不同。試着首先定義你的比較算法(也就是說,給定兩個字符串,在你的意義上如何確定它們哪個更大)。在定義之前,我們不能說任何話;很可能是,試圖定義它,你會明白你的感覺是不一致的,並且字符串集不能根據你的意思排序,例如,因爲違反了傳遞性。 – penartur 2012-02-22 08:14:01
如果所有的id都是'm1234567'類型,爲什麼不移除'm'並將列轉換爲'INT'? – 2012-02-22 09:29:24