连接多个值并在 null 时删除字符

Concatenate multiple values and removing characaters when null

我有以下查询

select id, CORD.LABEL ||' ('|| CORD.INTERVENT_TYPE || ')' ||' '||REFER.LABEL ||' ('|| REFER.INTERVENT_TYPE || ')'||' '|| INTER.LABEL ||' ('|| INTERVENT_TYPE || ')' AS INTERVEN_TYPE
from tableA

这会产生以下结果。

ID    INTERVEN_TYPE
1      () () Education(Other)

我只想在值不为空时显示结果。我希望看到。

ID    INTERVEN_TYPE
1     Education(Other)

我试过 case 表达式、nvl 和 coalesce。由于我无法创建正确的语法,哪一个最有效?

CASE:

select 
id, 
TRIM(
CASE CORD.LABEL ||'('|| CORD.INTERVENT_TYPE || ')' 
    WHEN '()' THEN ''
    ELSE CORD.LABEL ||' ('|| CORD.INTERVENT_TYPE || ')' 
END 
||' '||
CASE REFER.LABEL ||'('|| REFER.INTERVENT_TYPE || ')'
    WHEN '()' THEN ''
    ELSE REFER.LABEL ||' ('|| REFER.INTERVENT_TYPE || ')'
END 
||' '|| 
CASE INTER.LABEL ||'('|| INTERVENT_TYPE || ')'
    WHEN '()' THEN ''
    ELSE INTER.LABEL ||' ('|| INTERVENT_TYPE || ')'
END 
)
AS INTERVEN_TYPE
from tableA

我现在从左括号中删除了 1 space。
编辑:添加了TRIM功能。
如果你用 REPLACE:

消除 (),也许这也会起作用
select 
id, TRIM(
REPLACE(CORD.LABEL ||' ('|| CORD.INTERVENT_TYPE || ')', '()')
||' '||
REPLACE(REFER.LABEL ||' ('|| REFER.INTERVENT_TYPE || ')', '()')
||' '|| 
REPLACE(INTER.LABEL ||' ('|| INTERVENT_TYPE || ')', '()')
) 
AS INTERVEN_TYPE
from tableA