MySQL命令z1然后是aa1

时间:2011-04-06 05:28:53

标签: mysql

我有一个字段,它存储属性04202011a1到04202011z1的列表编号然后它转到04202011aa1到04202011zz1,依此类推,我怎样才能获得自04202011以来的下一个数字或字母组合的添加日期和最后的1个userID唯一增加的部分是字母

我可以将id分成几部分,但不知道如何获得最后一个

感谢

CG

1 个答案:

答案 0 :(得分:0)

设法取出非数字部分(或者只是将其存储在Mikko Wilkman建议的单独字段中),并且您希望z出现在aa之前,您可以使用:

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

修改

好的,要提取非数字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

我们的想法是首先删除所有数字,然后按长度排序,然后按字母顺序排序。