2012-02-22 8 views
0

、私は、クエリvarchar型からget max idを取得する方法は?

を使用M12 iは、テーブルおよび列VARCHAR型カラムID を有しており、値がM1、M2、...、M9、M10、M11、あるテーブル

からMAX(ID)を選択し

m9の結果は、m10を個々の文字として 'm'、 '1'、 '0'とみなすためです.so m9> m1(0)。

どうすればよいですか?varchar型からget max idを取得する方法はありますか?トリックを行う必要があります

+1

あなたの文字列比較の定義は、1つのMySQL(および他のほとんどの言語/プラットフォーム)とはまったく異なります。比較アルゴリズムを最初に定義してみてください(つまり、2つの文字列が与えられていれば、どれがあなたの意味でどれが大きいかを判断する方法です)。定義されるまでは何も言えません。それを定義しようとすると、あなたの感覚が矛盾していて、あなたのセンスに合わせて文字列を並べることができないことが理解できます。過渡性の違反のために。 – penartur

+0

すべてのidが 'm1234567'タイプの場合、' m'を削除してカラムを 'INT'に変換するのはどうですか? –

答えて

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

としてcancatすることができます最後に最大数

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

を達成するために、サブストリングを使用することができます。

+0

申し訳ありませんDECIMAL(5,0) –

+0

それは働くthx u –

+0

値1、 2,3 ...、10,11,12、varchar型? –

2

あなたはまた、 'M'

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

それは仕事をしなかった:( –

+0

@ N4ta-nata考えを得ることを試みなさいそれからそれは働くべきである – Kayser

関連する問題