2016-08-30 1 views
0

連結する必要がある表内に一連の列があり、3番目、4番目、5番目、6番目の値の角括弧が必要ですが、列無効である。Oracle 12c nullが含まれている角かっこで連結する

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

値がある限り正確に値を配置します。 1つ以上の列がnullを返すと、null値ごとに空の括弧が得られます。 113.203

または113.450(H)(2)(IV)()は:4つのNULL値我々が必要となる。この場合に がある113.203()()()()など

1つのヌル値です。 ここで希望の結果 は113.450(h)(2)(iv)

null値が返されたときに空白の括弧をすべて省略するようにスクリプトを変更するにはどうすればよいですか?

ありがとうございます。

+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

関連する問題