sql server中的max()问题

时间:2011-06-23 16:56:00

标签: sql sql-server

我有像字母数字一样的字母数字。 XYZ1,XYZ2 ...... XYZ11,XYZ12等,现在我想只选择最大数值,即12。 我试过了 -

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

但是这回来了9.为什么?

4 个答案:

答案 0 :(得分:6)

尝试在max

之前转换为INT
select max(cast(REPLACE(ID,'XYZ','') as int)) from myTable;

答案 1 :(得分:2)

它仍然将您的值视为字符串而不是数字。尝试:

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

答案 2 :(得分:0)

因为你还在比较字符串。它们只包含数字这一事实并不意味着它们不是字符串。你需要转换它们:

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

答案 3 :(得分:0)

另一种方法是

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