我有像字母数字一样的字母数字。 XYZ1,XYZ2 ...... XYZ11,XYZ12等,现在我想只选择最大数值,即12。 我试过了 -
select max(REPLACE(ID,'XYZ','')) from myTable;
但是这回来了9.为什么?
答案 0 :(得分:6)
尝试在max
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