Вот как он сейчас сортируется:

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
sql
0
Jimmy 19 Сен 2018 в 03:29

2 ответа

Лучший ответ
SELECT systemUnitID 
FROM systemUnit
ORDER BY CAST(REPLACE(systemUnitID, 'CRI-SU', '') As int)
1
Joel Coehoorn 19 Сен 2018 в 00:36

Если префикс всегда читается как «CRI-SU», вы можете попробовать заменить его пустой строкой с помощью replace(). Затем преобразуйте результат в целое число с помощью cast() и отсортируйте его по приведенному значению. Это должно работать во многих СУБД.

SELECT systemunitid
       FROM systemunit
       ORDER BY cast(replace(systemunitid, 'CRI-SU', '') AS integer);
2
sticky bit 19 Сен 2018 в 00:40