随笔 - 13  文章 - 0  评论 - 0  阅读 - 3296

Oracle 中序号含有数字,特殊字符组合排序

Oracle 中序号含有数字,特殊字符组合排序

在工作中碰到按某个序号字段排序,序号含有数字,数字和特殊字符的组合排序,详情如下图所示:

解决思路方法:将序号按特殊符合‘-’拆分为两个部分,‘-’之前为一个字段before_num,‘-’之后的为另一个字段behind_num,

利用substr()和instr()函数截取对应的字符,若把10排在9的后面,还需要在按长度排序

复制代码
SELECT
t.task_number,--序号

- - '-'之前
case when instr(t.task_number,'-')!=0 then substr(t.task_number,0,instr(t.task_number,'-')-1) else t.task_number end before_num, 
-- '-'之后
case when instr(t.task_number,'-')!=0 then substr(t.task_number,instr(t.task_number,'-')+1) else '0' end behind_num ,
r.typename
from test   t 
order by length(before_num),before_num,length(behind_num), behind_num
复制代码

参考博客链接:https://blog.csdn.net/leselon/article/details/53930107?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-4

posted on   溪因  阅读(695)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示