按拆分列排序
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)
我有一个名为 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)