我有一个 SQL 语句,通过 id 以升序对表进行排序,但是当我这样做时,表显示如下:
c-10
c-12
c-12
c-24
c-5
c-6
c-80
c-800
c-8000
这表明前几个和后几个是按顺序排列的,而其他部分则不是。为什么是这样?正如我尝试按表中的其他字段排序并且它们看起来很好,它只是这一列。您认为这可能是输入错误还是其他原因?
非常感谢您的帮助!
我有一个 SQL 语句,通过 id 以升序对表进行排序,但是当我这样做时,表显示如下:
c-10
c-12
c-12
c-24
c-5
c-6
c-80
c-800
c-8000
这表明前几个和后几个是按顺序排列的,而其他部分则不是。为什么是这样?正如我尝试按表中的其他字段排序并且它们看起来很好,它只是这一列。您认为这可能是输入错误还是其他原因?
非常感谢您的帮助!
顺序没问题,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 将根据您的需要进行排序。
select column
from your_table
order by to_number(regexp_substr(column, '\d+'))