2

Oracle テーブルの 40 列を更新するシナリオがあります。ソースは別のオラクル表です。

  1. null がある場合、列の値を無視したい!!

例:

col1 col2 col3 
1    null  b
2    null  3 

ターゲット テーブル:

col1 col2 col3
1     a    null
2     b    null

更新後。

col1 col2 col3
1     a   b
2     b   3 

注:nullでない場合にのみ更新する必要があります..

アドバイスをいただければ幸いです。

4

2 に答える 2

3
update target_table tt
   set (col1, col2, col3) = ( select nvl(st.col1,tt.col1), 
                                     nvl(st.col2,tt.col2), 
                                     nvl(st.col3,tt.col3) 
                                from source_table st where st.primary_key = tt.primary_key )
 where exists ( select null 
                  from source_table st 
                 where st.primary_key = tt.primary_key
                   and (st.col1 is not null 
                        or st.col2 is not null 
                        or st.col3 is not null) );

明らかに、主キーが何であるかを判断する必要があります。「primary_key」は、説明のためのガイドとしてのみ使用しました。

于 2013-07-16T19:03:10.130 に答える