sql server中的max()存在问题

sql server中的max()存在问题,sql,sql-server,Sql,Sql Server,我有字母数字值,比如。XYZ1、XYZ2……XYZ11、XYZ12等等,现在我只想选择最大数值,即这里的12。 我试过了- 但这是返回9。为什么?在max select max(cast(REPLACE(ID,'XYZ','') as int)) from myTable; 它仍然将您的值视为字符串而不是数字。尝试: select max(CAST(REPLACE(ID,'XYZ','') AS INT) from myTable; 因为你还在比较字符串。它们只包含数字并不意味着它们不是字符

我有字母数字值,比如。XYZ1、XYZ2……XYZ11、XYZ12等等,现在我只想选择最大数值,即这里的12。 我试过了-


但这是返回9。为什么?

max

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

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

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

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

SELECT MAX(CAST(REPLACE(id, 'XYZ', '') AS INT)) FROM My_Table
另一种方法是

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

您是否也希望看到
'XYZ9'
?这是我的错,我应该注意到它是一个字符串
select max(REPLACE(ID,'XYZ','')*1) from myTable