我有一个带有国家/地区列表的班车控制。因此,用户可以选择多个国家/地区,例如:UK, France, Portugal
。顺序取决于用户如何选择或移动选择(请参见图片)
这些作为UK:France:Portugal
存储在基础表中。
问题是我需要按字母顺序存储这些国家,因为UK:France:Portugal与France:Portugal:UK
不同。我知道在理想情况下,这些文件将保存在单独的行中,但是不幸的是,这对我来说不是一个选择。
是否有一种方法可以按顺序(例如在选择国家/地区时通过动态操作)对往复式选单中的选定值(右侧)进行排序?
如果没有,作为替代,我们是否可以进行后期计算以排序和存储这些值?
谢谢!
答案 0 :(得分:1)
我不知道 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>
可能还可以;试试看。