2011-06-23 63 views
3

我有類似字母數字的值。 XYZ1,XYZ2 ...... XYZ11,XYZ12等,現在我只想選擇最大數值,即12這裏。 我試過了 -max()在sql server中的問題

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

但是這是返回9.爲什麼?

+0

你還指望' 'XYZ9'<「XYZ12''? – Gabe

+0

這是我的不好,我應該注意到這是一個字符串 – Wondering

回答

6

嘗試轉換之前max

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

它仍然在處理你的價值作爲一個字符串而不是數到INT。試試:

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

因爲你還在比較字符串。它們只包含數字的事實並不意味着它們不是字符串。你需要將它們轉換:

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

另一種方法是

select max(REPLACE(ID,'XYZ','')*1) from myTable