У меня есть клиент, которому нужен отчет о токенах Лоусона, отсортированных в строгом буквенно-цифровом порядке. Ниже приведен пример тестового файла и запрос, который я использовал без успеха. Я не уверен, почему regex_replace здесь не работает. Буду признателен за любую помощь, которую я могу получить.сортировка альфаномерных строк в Oracle 11g
Спасибо.
enter code here
create table sortest (token varchar2(6));
insert into sortest values ("BR00.1');
insert into sortest values ("BRFL.1');
insert into sortest values ("BRBF.1');
insert into sortest values ("BR00.2');
insert into sortest values ("BRRF.1');
insert into sortest values ("BRIP.1');
insert into sortest values ("BRRF.3');
insert into sortest values ("BR00.3');
insert into sortest values ("BRBF.2');
insert into sortest values ("BRRF.2');
insert into sortest values ("BR01.2');
insert into sortest values ("BR06.1');
insert into sortest values ("BR01.1');
insert into sortest values ("BR17.1');
insert into sortest values ("BR132');
insert into sortest values ("BR120');
insert into sortest values ("BR12.1');
insert into sortest values ("BR121');
insert into sortest values ("BR13.2');
commit;
select * from sortest
--order by token
order by to_number(nvl(trim(regexp_replace(token,'[A-Za-z]')),0)) asc
;
Это возвращает '..... BR06.1, BR12.1, BR120, BR121, BR13.2, BR132, BR17.1 ....' и т.д. Заказ должен поставить BR13.2 и BR17.1 до BR120 и BR121, например.
«заказать по токен "дает список, который вы сказали, неверен; «order by to_number ...», кажется, дает вам то, что вы хотите, по крайней мере для BR13.2, BR17.1 и т. д. Можете ли вы более четко показать, какой результат вы действительно хотите, и логику этого? –