Sql按升序排序,有些值不按升序排列

时间:2013-04-07 19:42:16

标签: sql oracle sql-order-by

我有一个SQL语句,通过id按升序对表进行排序,但是当我这样做时,表格显示如下:

c-10
c-12
c-12
c-24
c-5
c-6
c-80
c-800
c-8000

因为这表明前几个和下几个是有序的而不是另一个。为什么是这样?正如我已经尝试通过表格中的其他字段进行排序而它们看起来很好,这只是本专栏。你认为这可能是输入错误或其他什么?

非常感谢你的帮助!

2 个答案:

答案 0 :(得分:1)

顺序没问题,sql按词汇顺序对字符串进行排序。

当2(在c-24中)出现在5之前(在c-5中)时,它就像那样排序。

如果你想在数字顺序中对这样的stings进行排序,请用零填充它们。

c-0010 c-0012 c-0012 c-0024 c-0005 c-0006 c-0080 c-0800 c-8000将根据需要进行分类。

答案 1 :(得分:1)

select column
from your_table
order by to_number(regexp_substr(column, '\d+'))

fiddle