我有一些带有数据的表 TABLE1
:
+------------+
| COL1 |
+------------+
| FOO |
| BAR |
| (null) |
| EXP |
+------------+
( FIDDLE )
当我执行:
SELECT listagg(col1, '#') within group(ORDER BY rownum)
FROM table1
我收到:
FOO#BAR#EXP
但我想要:FOO#BAR##EXP
(
LISTAGG
忽略空单元格:/)有什么想法可以在不编写自己的函数的情况下实现吗?
最佳答案
select replace(listagg(NVL(col1, '#'), '#')
within group(order by rownum),'###','##') from table1
您可以在此处使用
NVL(col1, '#')
您可以传递任何值而不是 null。HErE is the demo
关于sql - Oracle 11g : LISTAGG ignores NULL values,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17697475/