2011-04-06 58 views
0

我有一个字段,它存储属性04202011a1到04202011z1的列表编号,然后去04202011aa1到04202011zz1等等,我怎样才能得到下一个数字或字母组合自04202011它的日期添加和最后1它的用户标识符,增幅分别MySQL订单z1然后aa1

我可以各自单独的ID,但不知道如何获得最后一个

感谢

CG

+1

你的下一个序列是什么? '04202011aaa1'到'04202011zzz1'或'04202011b1'到'04202011z1'请澄清您的问题 – diEcho 2011-04-06 05:53:38

+1

为什么不把它们作为单独的字段存储? – 2011-04-06 07:28:40

+0

该序列使用第一个字母(a到z)然后它增加到2个字母(aa到zz),然后3,4,5等等,它增加取决于提交的天数 – charlymz 2011-04-06 19:09:35

回答

0

你之后的字母只有一部分设法p ULL了非数字部分(或简单地将其存储在一个单独的领域作为米科Wilkman曾建议),并且要zaa前出现,你可以使用:

SELECT non_numeric_id FROM table 
ORDER BY length(non_numeric_id), non_numeric_id 

编辑

OK,退出非数字ID,假定列名是id,你可以使用这个相当丑陋的解决方案:

SELECT 
     id, 
     REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
     id, 
     '1',''),'2',''),'3',''),'4',''),'5',''),'6',''),'7',''),'8',''),'9',''),'0','') 
     AS clean_id 
FROM table 
ORDER BY length(clean_id), clean_id 

的想法是首先删除所有号码,然后按长度排序,然后按字母顺序排列。

+0

如果我有04202011a1到04202011z1然后04202011aa1到04202011zz1我想先订购一个mysql一个字母然后用2个字母然后3等 – charlymz 2011-04-06 19:12:14

+0

perfecti它的工作感谢加尔兹 – charlymz 2011-04-08 04:10:20