在Oracle中选择带有数字的字母顺序

时间:2017-03-22 03:56:48

标签: oracle

我有这样的记录:

LEGO 9
LEGO 4
LEGO 5
LEGO 7
LEGO 12
LEGO 13
LEGO 14
LEGO 15
LEGO 10
LEGO 11
LEGO 3
LEGO 1
LEGO 2
LEGO 6
LEGO 8

我希望将它们排序为ASC

LEGO 1
LEGO 2
LEGO 3
LEGO 4
LEGO 5
LEGO 6
LEGO 7
LEGO 8
LEGO 9
LEGO 10
LEGO 11
LEGO 12
LEGO 13
LEGO 14
LEGO 15

当我在下面使用此语句查询时,排序不正确:

SELECT * FROM WA_LEG_TBL_LINES ORDER BY LINENAME ASC

LEGO 1
LEGO 10
LEGO 11
LEGO 12
LEGO 13
LEGO 14
LEGO 15
LEGO 2
LEGO 3
LEGO 4
LEGO 5
LEGO 6
LEGO 7
LEGO 8
LEGO 9

声明有什么问题吗?我想按LINENAME ASC订购。

1 个答案:

答案 0 :(得分:1)

这就是字符串排序的工作原理。

如果列中的所有行都有文本LEGO,则可以删除结果并将其转换为数字并按其排序。

select *
from WA_LEG_TBL_LINES
order by cast(replace(linename, 'LEGO ') as number);