我有学期的学期价值,如2011年秋季,2011年春季等。 我希望结果按顺序排序 示例
fall 2001
spring 2001
fall 2002
spring 2002
....
然而我正在
fall 2001
fall 2002
.....
spring 2001
spring 2002
.....
执行order by semester
答案 0 :(得分:1)
SELECT Semester
FROM Table
ORDER BY regexp_replace(Semester, '[^0-9]+', ''),
regexp_replace(Semester, '[^a-zA-Z]+', '')
这解析了文本中的数字,因此您可以先按年份排序,然后按文本排序。
或者你可以获得正确的4个大多数角色并先按顺序排序...... 确定正确的4个大多数角色将永远是年...
SELECT Semester
FROM Table
ORDER BY substr('spring 2001',-4), semester
答案 1 :(得分:0)
在ORDER BY中使用CASE表达式:
SELECT SEMESTER, whatever
FROM SEMESTER_VALUES
ORDER BY CASE SEMESTER
WHEN 'spring 2001' THEN 1
WHEN 'fall 2001' THEN 2
WHEN 'spring 2002' THEN 3
WHEN 'fall 2002' THEN 4
WHEN 'spring 2003' THEN 5
WHEN 'fall 2003' THEN 6
WHEN 'spring 2004' THEN 7
WHEN 'fall 2004' THEN 8
WHEN 'spring 2005' THEN 9
WHEN 'fall 2005' THEN 10
END;
您可以根据需要将CASE表达式设置为任意复杂。
祝你好运。
答案 2 :(得分:0)
有许多可能的解决方案。如果您能够修改表格,我会添加一个表示每个学期结束日期的日期字段。然后您可以按日期订购以获得所需的订单。