2016-08-30 89 views
0

我們需要連接一個表中的一組列,並且我們需要圍繞第三,第四,第五和第六個值的括號,但是如果列一片空白。Oracle 12c與包含空值的括號連接

SELECT "ID", 
      NVL(PART || '.'|| SECTION ||'(' ||SUB1||')'|| '(' ||SUB2|| ')'  || '('||SUB3||')' || '('||SUB4||')', '') as concatenated 
       FROM table1; 

只要有值,就將值正好放在正確的位置。當任何一個或多個列返回null時,我們爲每個空值獲取一組空括號。

如:113.203()()()()時,有四個空值 在這種情況下,我們需要:113.203

或者113.450(H)(2)(四)(在那裏)是一個空值。 這裏所需的結果 將是113.450(h)(2)(iv)

如何更改腳本以省略所有空括號時返回空值?

謝謝。

+0

你有沒有嘗試使用NVL函數爲每列?然後你可以使用case語句修改列值 – hchaznedaroglu

回答

2

嗯,我想你想:

select id, 
     (part || '.' || section || 
     (case when sub1 is not null then '(' || sub1 || ')' end) || 
     (case when sub2 is not null then '(' || sub2 || ')' end) || 
     (case when sub3 is not null then '(' || sub3 || ')' end) || 
     (case when sub4 is not null then '(' || sub4 || ')' end) 
     ) as concatenated 
from table1; 
+0

完美!謝謝 – user761758