按拆分列排序

时间:2015-03-09 01:41:00

标签: sql ms-access

我有一个列调用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....

我该怎么做?

2 个答案:

答案 0 :(得分:3)

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))

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

答案 1 :(得分:1)

标题暗示分裂:

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)