如何在带有数字输入的文本上应用Order By

时间:2015-04-21 09:27:27

标签: mysql sql-order-by technical-debt

这是我的测试数据(MySQL)

test1
test2
test3
test10
test11
mytest

我想按文字订购这些记录,而不是按照以下号码(如果有的话)订购:

mytest
test1
test2
test3
test10
test11

当我使用Order By时,我的数据按文本排序,如下所示:

mytest
test1
test10
test11
test2
test3

有人能为我提供解决方案吗?

1 个答案:

答案 0 :(得分:0)

在我的查询中,我将字母数字值与字符串值分开,然后梳理结果,看看:

  select temp1.a col from
  (select a from tabl WHERE a not REGEXP '[0-9]' order by length(a)) temp1
  union all 
  select temp2.a  from
  (select a FROM tabl WHERE a REGEXP '[0-9]' order by length(a),a) temp2 ;