我有一些带有数据的表 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/

10-11 02:48