在 Oracle 中有条件地连接字段

Conditionally concatenating fields in Oracle

我需要做的是在 Oracle SQL Developer 中连接 4 个字段。这些字段是:

Network, Network2, Network3, Network4

但是,有时并非所有字段都已填写。这总是按顺序发生;它永远不会只是 Network3 是空的,它们要么只填充第一个,只填充前 2 个,等等...

那么,我如何编写 Select 语句来忽略任何 NULL 字段?我需要最终结果看起来像:

Select Network, Network2, Network3, Network4 as Defect

它应该在一个字段中将缺陷显示为 "ON1, ON2, ON3, ON4" 之类的东西。但如果只填写前 2 个,我不希望它看起来像 "ON1, ON2, , , ".

使用 CONCATENATE || 运算符和 COALESCE() 函数:

SELECT  Network
        || COALESCE(' - ' || Network2, '')
        || COALESCE(' - ' || Network3, '')
        || COALESCE(' - ' || Network4, '')
as Defect

使用NVL2(v, valueIfNotNull, valueIfNull)

SELECT
    Network
 || nvl2(Network2, ', ' || Network2, '')
 || nvl2(Network3, ', ' || Network3, '')
 || nvl2(Network4, ', ' || Network4, '') AS Defect
FROM my_table