我想从我的S_ID列中获取最大值,该列被声明为varchar类型

时间:2014-09-21 16:37:24

标签: mysql sql

我的S_ID值为

S_1
S_2
S_3,...., S_11. 

我使用SELECT MAX(S_ID) FROM stock_detail来获取最大值。

它一直工作到S_9但是当它到达S_11时:该查询只给我S_9作为最大值。如何将S_11作为最大值?请帮帮我,我只是编程的初学者。

1 个答案:

答案 0 :(得分:1)

您可以使用此构造获得最大值:

select s_id
from stock_detail
order by length(s_id) desc, s_id desc
limit 1;

这会将较长的值放在第一位。

如果您想使用max(),那么您需要解构数字。类似的东西:

select concat('S_', max(replace(s_id, 'S_', '') + 0))
from stock_detail;

这允许您获得数字最大值而不是字符最大值,这是您问题的根源。