我的一张桌子有这样的值..
Year 1
Year 9
Year 8
Year 4
Kindy [can be any word without numbers]
Pre-School [can be any word without numbers]
Year 8
Year 22
Year 15....
我该如何首先按字母顺序对它们进行排序,然后再按数字以这种升序对其进行排序。
Kindy
Pre-School
Year 1
Year 4
Year 8
Year 9
Year 15
Year 22
我已经尝试了以下方法。
SELECT YearLevel FROM Student
ORDER BY
CASE WHEN YearLevel NOT LIKE '%[0-9]%' THEN 0
ELSE CAST(RIGHT(YearLevel, LEN(YearLevel) - 5) AS int)
END
但是问题是我只需要不同的记录。
如果具有数字的列始终具有Year [digits]
格式,则可以尝试此操作
SELECT YearLevel FROM student
GROUP BY YearLevel
ORDER BY
(CASE
WHEN YearLevel LIKE 'Year%'
THEN 'Year' + CONVERT(varchar,LEN(YearLevel)) + YearLevel
ELSE YearLevel
END)
http://sqlfiddle.com/#!3/1919c/3
虽然这可能会起作用,但我建议添加带有排序顺序的整数列。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句