按拆分列排序

Order By Split Column

我有一个名为 id 的专栏:

4.1.2.10.0
4.1.2.3.0
4.1.2.4.0
6.1.20.0.0
6.1.3.0.0
...
etc...

我想要做的是包含一个 ORDER BY 语句,将 字符串,变成这样:

4.1.2.3.0
4.1.2.4.0
4.1.2.10.0
6.1.3.0.0
6.1.20.0.0
...
etc....

我该如何做这样的事情?

field1替换为实际的字段名:

select      *
from        tbl
order by    CInt(mid(field1,1,instr(1,field1,'.')-1)),
            CInt(mid(field1,instr(1,field1,'.')+1,instr(2,field1,'.')-1)),
            CInt(mid(field1,instr(3,field1,'.')+1,instr(4,field1,'.')-1)),
            CInt(mid(field1,instr(5,field1,'.')+1,instr(6,field1,'.')-1))

正如 Gordon 在评论中指出的那样,这很容易出错。可能要等待更好的答案。

如题所示拆分:

Public Function SplitSort( _
    ByVal Value As String, _
    ByVal Element As Integer) _
    As Integer

    On Error Resume Next
    SplitSort = Split(Value, ".")(Element - 1)

End Function

现在:

Order By 
    SplitSort([Fieldname], 1),
    SplitSort([Fieldname], 2),
    SplitSort([Fieldname], 3),
    SplitSort([Fieldname], 4),
    SplitSort([Fieldname], 5)