admin

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

sql

谁能告诉我该如何解决?我的课程顺序是按课程编号递增(例如,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

阅读 164

收藏
2021-06-07

共1个答案

admin

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

为了解决这个问题,您可能需要将课程号(“ CS 020”)零填充,或者需要使用带有课程号的单独数字列进行排序。

2021-06-07