2011-06-23 10 views
3

私のような英数字の値があります。 XYZ1、XYZ2 ...... XYZ11、XYZ12など、ここでは最大値、つまり12を選択します。 私は試しましたSQLサーバーのmax()に問題があります

select max(REPLACE(ID,'XYZ','')) from myTable; 

しかし、これは9です。なぜですか?それはまだ代わりに、数の文字列として、あなたの値を処理することだmax

select max(cast(REPLACE(ID,'XYZ','') as int)) from myTable; 
+0

であなたも ' 'XYZ9' <「XYZ12''期待していますか? – Gabe

+0

それは私の悪いです、私はそれが文字列であることに気づくべきでした – Wondering

答えて

6

はINTに変換する試してみてください。試してください:

select max(CAST(REPLACE(ID,'XYZ','') AS INT) from myTable; 
2

0

あなたはまだ文字列を比較しているためです。数字にしか含まれていないということは、文字列ではないということではありません。あなたはそれらを変換する必要があります。

SELECT MAX(CAST(REPLACE(id, 'XYZ', '') AS INT)) FROM My_Table 
0

もう一つの方法は、

select max(REPLACE(ID,'XYZ','')*1) from myTable 
関連する問題