加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 百科 > 正文

Oracle:如何在SQL查询中实现“自然”的顺序?

发布时间:2021-05-16 05:09:41 所属栏目:百科 来源:网络整理
导读:例如, foo1foo2foo10foo100 而不是 foo1foo10foo100foo2 更新:对自己编码排序不感兴趣(虽然这本身就很有趣),但让数据库为我做排序. 您可以在order-by子句中使用函数.在这种情况下, 你可以拆分的非数字和数字部分 字段并将它们用作两个排序标准. select *

例如,

foo1
foo2
foo10
foo100

而不是

foo1
foo10
foo100
foo2

更新:对自己编码排序不感兴趣(虽然这本身就很有趣),但让数据库为我做排序.

您可以在order-by子句中使用函数.在这种情况下,
你可以拆分的非数字和数字部分
字段并将它们用作两个排序标准.
select * from t
 order by to_number(regexp_substr(a,'^[0-9]+')),to_number(regexp_substr(a,'[0-9]+$')),a;

您还可以创建基于函数的索引来支持:

create index t_ix1
    on t (to_number(regexp_substr(a,a);

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读