如何在SQL中将字符串排序为数字?

One*_*ofo 2 mysql sql oracle sql-order-by

谁能告诉我如何解决这个问题?我的订单是由coursenum(例如,CS 20,CS 25,CS 100都是课程编号)提升.它计算的是第一个数字而不是整数,但是:

-----------------------------------------
Course                              Grade
-----------------------------------------
CS 120 Intro to Java Programming        A
CS 140 Structured Analysis              A
CS 20 Intro to Computers                F
CS 25 Intro to Programming              B
Run Code Online (Sandbox Code Playgroud)

Chr*_*ald 8

这里的问题是您的数据库正在进行字符串排序,而不是数字排序.计算机将无法查看该数据并推断出语义排序顺序.字符串排序是通过获取两个字符串并比较每个字符直到一个字符位于另一个字符之前完成的.因此,在您的示例中,每个课程都以"CS"开头,但第四个字符是数字字符(与数字类型不同!)."1"的排序低于"2",然后在"1"中,"2"排序低于"4",依此类推.

要解决此问题,您需要填写课程编号("CS 020"),或者您需要一个单独的数字列和课程编号进行排序.