-1

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

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

这表明前几个和后几个是按顺序排列的,而其他部分则不是。为什么是这样?正如我尝试按表中的其他字段排序并且它们看起来很好,它只是这一列。您认为这可能是输入错误还是其他原因?

非常感谢您的帮助!

4

2 回答 2

1

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

因为 2(在 c-24 中)在 5(在 c-5 中)之前,所以它是这样排序的。

如果您想按数字顺序对这样的字符串进行排序,请在它们前面加上零。

c-0010 c-0012 c-0012 c-0024 c-0005 c-0006 c-0080 c-0800 c-8000 将根据您的需要进行排序。

于 2013-04-07T19:51:09.267 回答
1
select column
from your_table
order by to_number(regexp_substr(column, '\d+'))

小提琴

于 2013-04-07T19:54:09.447 回答