在Oracle

时间:2016-11-29 14:56:04

标签: sql oracle12c

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

  

网络,Network2,Network3,Network4

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

那么,如何编写一个忽略任何NULL字段的Select语句?我需要最终结果如下:

Select Network, Network2, Network3, Network4 as Defect

它应该在一个字段中显示缺陷,如“ON1,ON2,ON3,ON4”。但如果只填写前2个,我不希望它看起来像“ON1,ON2 ,,,”。

2 个答案:

答案 0 :(得分:3)

使用NVL2(v, valueIfNotNull, valueIfNull)

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

答案 1 :(得分:-1)

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

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