使用Max或top或rowset从表中检索最后一行

时间:2015-02-22 09:05:07

标签: sql sql-server sql-server-2008

我有一个包含20行的表,其中Emp_Id列值为

E001
E002
E003
E004
E005
E006
E007
E008
E009
E0010
E0011
E0012
E0013
.
.

但是当我使用

Select MAX(Emp_ID) 
from table name 
order by Emp_Id desc

输出:

E009

请给出解决方案,为什么我无法获得最后一行。

用于Emp_Id的数据类型:nvarchar(10)

1 个答案:

答案 0 :(得分:0)

我猜你可以使用MAX(MID(Emp_ID,1))代替MAX(Emp_ID)。

如果它仍然不起作用,将字符串转换为数字应该会有所帮助。 示例 - MAX(TO_NUMBER(MID(Emp_ID,1)))。

编辑 - 首先,订单没有用处。既然你要求SQL服务器,请使用它 -

SELECT 'E00' + CAST (MAX (CONVERT (INT, RIGHT(Emp_ID, LEN(Emp_ID) - 1))) AS varchar) from Emp_Id;