如何将逗号分隔的值放入行中,如另一个oracle顶点下方的行



我有一个顶点项,其值如Value1、Value2、Value3,因此我需要显示以下值

值1

值2

值3

下面是我的选择查询,有人能帮助这里显示逗号分隔的值吗例如:a、b、c、d

我需要看到的输出

abcd

SELECT  AD.EMAIL_ADDRESS recipient
FROM   HES_EXTERNAL_ACCOUNTS EA,
HES_ADDRESSES         AD
WHERE  EA.ACCOUNT_CODE       = 'AUTO';

上述查询将导致像a、b、c、d这样的电子邮件地址需要显示在顶点项中一bcd

虽然Chris Saxon的文章描述了许多SQL场景和一个很酷的SQL宏,但APEX提供了一个将字符串拆分成行的简单工具:

select column_value from table(apex_string.split('a,b,c,d',','));
Result Sequence                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
----------------
a
b
c
d

table((子句在某个数据库版本(可能是18c(中是不需要的。

但是你的问题并不完全清楚你需要什么样的产出。一方面,你似乎想用空格代替逗号

replace('a,b,c,d', ',', ' ')

但在另一个时刻,你建议使用另一个中的一个

replace('a,b,c,d', ',', '<br>')

如果在报告中显示为列,则需要关闭转义

如果该选择返回一行,则这是一个可能的解决方案:

CREATE TABLE emails (email_list) AS (
select 'mickey.mouse@disney.com, homer.simpson@acme.com'
from dual
);
Table EMAILS created.
select TRIM(regexp_substr (
email_list,
'[^,]+',
1,
level
)) email
from   emails
connect by level <= 
length ( trim ( both ',' from email_list ) ) - 
length ( replace ( email_list, ',' ) ) + 1;
EMAIL                                          
-----------------------------------------------
mickey.mouse@disney.com
homer.simpson@acme.com

但Chris已经做了所有的研究,并在这里写了博客。该博客总结了最常见的案例以及每种案例的解决方案。

最新更新