前端之家收集整理的这篇文章主要介绍了
Oracle:如何在SQL查询中实现“自然”的顺序?,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
例如,
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);
原文链接:https://www.f2er.com/oracle/205124.html