首页 > 解决方案 > 如何在十进制数字中的点后对列进行排序 - 女士访问

问题描述

我想对列进行排序...例如:1.1、1.2、1.3、. . . ,1.9, 1.10, 1.11, 1.12, . . ,2.1, 2.2, 2.3, . . ,2.9, 2.10, 2.11, . . ,3.1, 3.2, ... 等等..

我试过这个,

    SELECT SectionName.UnderISMDocNumber
    FROM SectionName
    ORDER BY SectionName.UnderISMDocNumber;

但我得到了这种结果

谁能指导我?如何在 Ms Access 中过滤此列?

标签: sqldatabasesortingms-accessfilter

解决方案


您可以通过将第二部分转换为整数的花哨表达式进行排序,然后按以下顺序排序:

SELECT 
    UnderISMDocNumber
FROM 
    SectionName
ORDER BY 
    Int(Val([UnderISMDocNumber])), Val(Mid(Str(CCur(Val([UnderISMDocNumber]))-Int(Val([UnderISMDocNumber]))),3));

但是你遇到了严重的麻烦,因为当你使用像3.03这样带有前导零的条目时混合字符串排序和数字排序,你可以看到:

UnderISMDocNumber
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
1.11
1.12
1.13
2
2.1
2.2
3.01
3.10
3.02
3.03
3.04
3.5
3.11
3.12
3.13

因此,要么在 上使用零和普通数字排序Val([UnderISMDocNumber]),要么不要在第二部分使用前导零。你不能两者兼得。


推荐阅读