带分隔符的动态连接忽略空值

问题描述

我有一个包含空值的表:

STREET_NAME 位置 CULVERT_TYPE CULVERT_WIDTH CULVERT_MATERIAL
主要街道 从 ST A 到 ST B 下水道风暴\涵洞 1750 波纹钢管
SIDE ST 从 ST C 到 ST D 下水道风暴\涵洞 波纹钢管
竞技场 1 下水道风暴\涵洞 300
下水道风暴\涵洞 500
.
with cte as (
select 'MAIN ST' as STREET_NAME,'FROM ST A TO ST B' as LOCATION,'SEWER STORM \ CULVERT' as CULVERT_TYPE,1750 as CULVERT_WIDTH,'CORRUGATED STEEL PIPE' as CULVERT_MATERIAL
from dual
union all
select 'SIDE ST' as STREET_NAME,'FROM ST C TO ST D' as LOCATION,null as CULVERT_WIDTH,'CORRUGATED STEEL PIPE' as CULVERT_MATERIAL
from dual
union all
select null as STREET_NAME,'ARENA 1' as LOCATION,300 as CULVERT_WIDTH,null as CULVERT_MATERIAL
from dual
union all
select null as STREET_NAME,null as LOCATION,500 as CULVERT_WIDTH,'' as CULVERT_MATERIAL
from dual
union all
select null as STREET_NAME,null as CULVERT_TYPE,null as CULVERT_MATERIAL
from dual
)
select * from cte

我想将这些值连接到以竖线分隔的 | 列中(并忽略空值)。

CULVERT DESCRIPTION
----------------------
MAIN ST | FROM ST A TO ST B | SEWER STORM \ CULVERT | 1750 | CORRUGATED STEEL PIPE
SIDE ST | FROM ST C TO ST D | SEWER STORM \ CULVERT | CORRUGATED STEEL PIPE
ARENA 1 | SEWER STORM \ CULVERT | 300
SEWER STORM \ CULVERT | 500
<null>

问题:

有没有办法像在 Oracle 18c 中那样进行动态连接,同时忽略空值?

如果解决方案是一个易于阅读的简单函数,那将是理想的,例如:

dyamic_concat( delimiter,parameters [ column1,column2,column3 ]... )

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)