使用正则表达式对数字字符串字段排序

来源:这里教程网 时间:2026-03-03 12:59:48 作者:

我们在给含有数字的字符串字段进行排序时,常常会遇到一个尴尬的情况,用简单的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

相关推荐