我们在给含有数字的字符串字段进行排序时,常常会遇到一个尴尬的情况,用简单的order by无法给这些字段完整的排序,如以下查询效果,不符合我们的预期:
select * from tb1 order by name;
怎么办呢?用正则表达式可以解决这个问题,下面给个完整例子:
创建测试表
create table tb1(name varchar2(50), val number);
insert into tb1 values('rec7', 100);
insert into tb1 values('rec8', 100);
insert into tb1 values('rec3', 100);
insert into tb1 values('rec5', 100);
insert into tb1 values('rec2', 100);
insert into tb1 values('rec9', 100);
insert into tb1 values('rec10', 100);
insert into tb1 values('rec4', 100);
insert into tb1 values('', 100);
insert into tb1 values('rec6', 100);
insert into tb1 values('rec1', 100);
commit;
按照第一个字段排序输出
select * from tb1 order by to_number(regexp_substr(name, '[0-9]*[0-9]', 1))
也可以用以下形式,效果是一样的
select * from tb1 order by to_number(translate(name, '0123456789.' || name, '0123456789.')) asc nulls last
使用正则表达式对数字字符串字段排序
来源:这里教程网
时间:2026-03-03 12:59:48
作者:
编辑推荐:
- 使用正则表达式对数字字符串字段排序03-03
- [20190226]删除tab$记录的恢复6.txt03-03
- ORA-01555错误分析03-03
- ACE(02):Oracle ACE常见问题03-03
- rac静默安装03-03
- Oracle 11G RAC 删除节点03-03
- Oracle 11G RAC 增加节点03-03
- 物理DataGuard客户端无缝切换--客户端TAF 配置03-03
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 使用正则表达式对数字字符串字段排序
使用正则表达式对数字字符串字段排序
26-03-03 - [20190226]删除tab$记录的恢复6.txt
[20190226]删除tab$记录的恢复6.txt
26-03-03 - 为何Oracle Database 12R2输入正确的用户名密码口令验证依然不能通过?
- Oracle Data Guard 部署调试试验【一主一备/单机】
Oracle Data Guard 部署调试试验【一主一备/单机】
26-03-03 - Oracle的SCN显示问题
Oracle的SCN显示问题
26-03-03 - WRH$_ACTIVE_SESSION_HISTORY未自动清理导致SYSAUX空间过度增长的处理方法
- Debian监控业务指标配置(手把手教你用Prometheus+Grafana搭建Debian系统性能监控平台)
- 【kingsql分享】Oracle跨版本迁移之XTTS_V4版本的实施
【kingsql分享】Oracle跨版本迁移之XTTS_V4版本的实施
26-03-03 - PLSQL Developer 提示字段名,回车后卡顿解决
PLSQL Developer 提示字段名,回车后卡顿解决
26-03-03 - oracle 正则表达式4个主要函数
oracle 正则表达式4个主要函数
26-03-03
