Apex 5 以列表形式显示以分号分隔的穿梭存储数据

Apex 5 display shuttle stored data delimted by semicolon, in list form

正如标题所说。我将航天飞机数据保存在用分号分隔的列中:

confid | values
------------------------------------------------------
id1    | conf_value1;conf_value2;conf_value3;conf_value4

它存储的原因是因为没有一个配置是相同的,并且可以有任何介于单个配置值和 50 之间的值。因此为每个创建单独的列很困难。

但是我需要找到一种方法在 Apex 中以列表形式显示它,而不是用分号分隔。所以简单地做:

select values from table where confid='id1'

只是 returns:

conf_value1;conf_value2;conf_value3;conf_value4

用户难以阅读..

所以问题是,有没有办法在 Apex 中以列表形式显示数据?类似于当你进行搜索时它会显示:

confid | values
---------------------
id1    | conf_value1
         conf_value2
         conf_value3
         conf_value4

或者 Apex 仅 return 中 table 中的数据喜欢样式吗?

将这些值拆分成行。这是一个例子; CTE在此提供测试数据。您需要评论后面的部分。

SQL> with test (confid, cvalues) as
  2    (select 'id1',
  3            'conf_value1;conf_value2;conf_value3;conf_value4'
  4     from dual)
  5  -- this is what you need
  6  select regexp_substr(cvalues, '[^;]+', 1, level) value
  7  from test
  8  connect by level <= regexp_count(cvalues, ';') + 1;

VALUE
--------------------------------------------------------------------
conf_value1
conf_value2
conf_value3
conf_value4

SQL>

在 APEX 5.X 中你可以使用

APEX_UTIL.STRING_TO_TABLE (
p_string       IN VARCHAR2,
p_separator    IN VARCHAR2 DEFAULT ':') 
RETURN APEX_APPLICATION_GLOBAL.VC_ARR2;

在 APEX 18.1 中,您可以使用 APEX_STRING.STRING_TO_TABLE,因为上面的函数已被弃用。