MySQL,首先排序单个字母,然后是双字母,然后是三个字母

时间:2013-08-06 00:58:36

标签: mysql sorting

给出一组字母{a,aa,b,bb,c,cc​​,bbb}

我想首先用单个字母,然后是双字母,然后是三个字母来命令它们。在该构造中,我希望它们按字母顺序排列。

实施例: a,b,c,aa,bb,cc,bbb

对于我的用例,它最多只能输出3个字母。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

对于您提供的数据,您只需使用长度:

order by length(letters),
         letters;

这假定字母如问题所述,之后没有其他字母。

如果这些是前缀,那么蛮力方法将是:

order by ((substring(letters, 1, 1) = substring(letters, 2, 1)) +
          (substring(letters, 1, 1) = substring(letters, 3, 1)
         ), letters;

即,将初始角色与下两个角色进行比较。当第一个和第二个字符不同时,上面返回0; 1,当第一个和第二个相同但第三个不同时;和2三个字符前缀。