आप अपने ऑर्डर-बाय क्लॉज में फ़ंक्शंस का उपयोग कर सकते हैं। इस मामले में, आप फ़ील्ड के गैर-संख्यात्मक और संख्यात्मक भागों को विभाजित कर सकते हैं और उन्हें दो आदेश मानदंड के रूप में उपयोग कर सकते हैं।
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, '^[0-9]+')),
to_number(regexp_substr(a, '[0-9]+$')),
a);