【发布时间】:2019-05-16 13:11:46
【问题描述】:
我必须连接 2 列并输入值。但问题是即使两个值都为空,它仍然按照以下语法给出 (:)。如果两个值都为空,我们是否可以删除输出中的列。
listagg(AP.ISSUE_ID||':'||ISS.ISSUE_DESCRIPTION ,'; ') within group(order by AP.ISSUE_ID||':'||ISS.ISSUE_DESCRIPTION) DESCRIPTION,
【问题讨论】:
我必须连接 2 列并输入值。但问题是即使两个值都为空,它仍然按照以下语法给出 (:)。如果两个值都为空,我们是否可以删除输出中的列。
listagg(AP.ISSUE_ID||':'||ISS.ISSUE_DESCRIPTION ,'; ') within group(order by AP.ISSUE_ID||':'||ISS.ISSUE_DESCRIPTION) DESCRIPTION,
【问题讨论】:
如果要忽略listagg() 中的列,请将值设置为NULL。在这种情况下,Oracle 接受 NULL 值进行字符串连接。所以,让我们在连接之后做一个测试:
listagg(nullif(AP.ISSUE_ID ||| ':' || ISS.ISSUE_DESCRIPTION, ':'),'; ')
within group (order by AP.ISSUE_ID || ':'|| ISS.ISSUE_DESCRIPTION) as DESCRIPTION,
【讨论】:
AP.ISSUE_ID || nvl2(AP.ISSUE_ID || ISS.ISSUE_DESCRIPTION, ':' || ISS.ISSUE_DESCRIPTION, null)
【讨论】: