使用 VarChar 进行列排序

Column Ordering with VarChar

在使用 CTE 编写查询时,我试图对具有特定数据类型的所有不同级别的子元素进行排序。在数据库中有一个 "display order" 列,我用它来提取父显示顺序并将其连接到子显示顺序。结果列是一个混合长度的项目数组,从父级到子级显示上层显示顺序是什么,见下文:

DISPLAYORDER
10-0
11-0
12-0
13-0
2-0-0
2-1-2-0
2-1-3-0
2-1-4-0
3-1
3-2
3-2-4-0
4-0-1
4-1-1
4-2-0
4-3-0
4-4-0
5-0
6-0
7-0
8-0
9-0

以上数据已按顺序排序,但不幸的是,因为我必须从 int 转换为 varchar 才能连接,所以我重新引入了尝试时可能发生的“1,10,11,2”问题种类。排序时是否可以使用变通方法将前四行(10-0 到 13-0)移到底部?

用零填充你的数字,这样 2-1-2-0 就变成 02-01-02-00,如果你有大于 99 的序数,填充到三个字符宽,002-001-002-000