数据库排序问题

来源:百度知道 编辑:UC知道 时间:2024/06/14 19:34:09
我的数据中有一字段a,内容如下。
a
-----
1-1
1-2-11
1-6
1-2-12
1-3
1-2-1
1-2
1-2-1-1
1-2-1-2
也就是说记录是没有顺序的。我想提取出来后,让他按顺序排列如下。
1-1
1-2
1-2-1
1-2-1-1
1-2-1-2
1-2-11
1-2-12
1-3
1-6

我试过用order by排序,但出现这种现像
1-2-11
1-2-1-1
1-2-12
1-2-1-2
我的设计思想是1-1隶属于1,1-1-1隶属于1-1。我想了一下午也没想出来怎么做。麻烦各位,哪位会的,帮帮忙,谢谢。

原意和你交流
HI我一下
——————————————
排序哪个
麻烦你了。我那个数据有办法按照我想的那种排列么?
就是排成这样的。
1-1
1-2
1-2-1
1-2-1-1
1-2-1-2
1-2-11
你的问题这样解决呀
01-01
01-02
01-02-01
01-02-01-01
01-02-01-02
10-02-11
01-02-12
01-03
01-06
01-02-01-01
01-02-01-02
哦了
这样有个问题,就是会排到多少位是不一定的。
你提的是不合理的要求呀
都用四位一般的系统是够用的
因为我们的系统就是这样用的
每一级用四位
做个补零的代码
只有各位补三个
有十位补两个
有百位补一个
有千位啥也不干
这样你原来的思全都不用改
思路全不用改
作个通用的函数呀
string 函数(int 参数)
………………
return string
不管是什么数
经过你这个函数都反回一个正确的字符串
0001
0012

或者试试增加一个字段用来排序。。

把-去掉后排序就是你要的结果

我这么想的, ‘-’这个字符在ascii当中的实际值比‘n’大,n为1到9
所以你应该用replace函数把‘-’替换成一个比1到9都小的字符,比如0
然后再排序

1-2-11变成 102011
1-2-1-1变成 1020101
很明显比较到第6位时,满足了你的要求
但是,这里有歧义,往下看
1-2-101 变成 1020101 它和1-2-1-1是一个值了,所以我推荐你不要使用‘0’来替换

很明显比较到第6位时,满足了你的要求