Я не знаю Apex-решение , но могу предложить Oracle-решение .
Вот пример: таблица test
хранит информацию о странах:
SQL> create table test (id number, countries varchar2(30));
Table created.
Триггер базы данных сортирует значения в столбце countries
.Как?Он разбивает строку значений, разделенных двоеточиями, на строки (это то, что делают regexp
и connect by
), а затем объединяет их обратно в другую строку значений, разделенных двоеточиями (используя listagg
), но на этот раз сортирует (order by 1
):
SQL> create or replace trigger trg_biu_cou
2 before insert or update on test
3 for each row
4 begin
5 select listagg(regexp_substr(:new.countries, '[^:]+', 1, level), ':') within group (order by 1)
6 into :new.countries
7 from dual
8 connect by level <= regexp_count(:new.countries, ':') + 1;
9 end;
10 /
Trigger created.
ОК, посмотрим, как это будет работать:
SQL> insert into test (id, countries) values (1, 'UK:France:Portugal');
1 row created.
SQL> select * from test;
ID COUNTRIES
---------- ------------------------------
1 France:Portugal:UK
SQL> update test set countries = 'New Zealand:Croatia:Hungary' where id = 1;
1 row updated.
SQL> select * from test;
ID COUNTRIES
---------- ------------------------------
1 Croatia:Hungary:New Zealand
SQL>
Может быть, все в порядке;попробуй.