作者joedenkidd (优质的蓝色射手)
看板Database
标题[SQL ] 资料排序问题
时间Sun Feb 14 18:19:46 2016
Hi All
我遇到一个排序问题,请问题是否能在 seach的时候解掉
资料如下
栏位资料
群组 资料
A A-1
A A-2
A A-11
B B-3
B B-2
B B-5
C C-1-1
C C-1-3
C C-1-11
C C-2-11
期望输出结果
A A-1
A A-2
A A-11
B B-2
B B-3
B B-5
C C-1-1
C C-1-3
C C-1-11
C C-2-11
目前做法如下
select *,LPAD(LTRIM(split_part(资料,'-',2)),3,'0') as ss from table order by 群组 asc,ss asc,资料 asc
但是这样子只能解 A B问题
C的排序会变成
C-1-1
C-1-11
C-1-3
C-2
不知道怎修改才能达到我想要的结果,请高手指点一下,感谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 59.115.185.128
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Database/M.1455445189.A.4BC.html
1F:推 chippclass: 你那个方法原因出在只能针对一个减号来用的 (应该吧? 02/15 17:21
2F:→ chippclass: C群组有两个减号的话 可以重复把排序多弄一次就可以解 02/15 17:21
4F:→ chippclass: 但是这样单纯的硬解,会有相同的缺点, 02/15 17:23
5F:→ chippclass: 当减号有3个以上时就不能用了 02/15 17:23
6F:→ joedenkidd: 了解,我也是想到硬解 再拆一组出来比 02/15 21:58
7F:→ jej: 资料向右补齐10格, 使用'.'补齐 排序 搞定 02/17 19:07
8F:→ joedenkidd: jej大,能举例吗? 02/17 20:30
10F:→ joedenkidd: r大,看不到也 02/18 11:05
12F:推 rockchangnew: 我的做法还是有BUG啦 02/18 11:52
13F:推 rockchangnew: 我想到另一个做法就是A-1转A-01然後在排序 02/18 11:55