如何在SQL中用数字对字符串进行数字排序?

时间:2018-09-19 00:29:32

标签: sql

这是当前的排序方式:

CRI-SU1
CRI-SU10
CRI-SU11
CRI-SU2
CRI-SU3
CRI-SU4
CRI-SU5
CRI-SU6
CRI-SU7
CRI-SU8
CRI-SU9

我希望它按数字排序:

CRI-SU1
CRI-SU2
CRI-SU3
CRI-SU4
CRI-SU5
CRI-SU6
CRI-SU7
CRI-SU8
CRI-SU9
CRI-SU10
CRI-SU11

如何在SQL中对其进行排序? 这是我的sql语句...

SELECT systemUnitID FROM systemUnit ORDER BY systemUnitID

2 个答案:

答案 0 :(得分:2)

如果前缀始终显示为“ CRI-SU”,则可以尝试使用replace()将其替换为空字符串。然后将结果转换为带有cast()的整数,并按转换值排序。这应该在许多DBMS中都可以使用。

SELECT systemunitid
       FROM systemunit
       ORDER BY cast(replace(systemunitid, 'CRI-SU', '') AS integer);

答案 1 :(得分:1)

SELECT systemUnitID 
FROM systemUnit
ORDER BY CAST(REPLACE(systemUnitID, 'CRI-SU', '') As int)
相关问题