0

私の OracleDB には、100 列 (1-100) のテーブルがあります。最も低い空の値を値 (たとえば 1) で更新するには、クエリが必要ですが、自分でそれを理解することはできません。常に最も低い空の列を取得する方法 (例: 列 1-10 が空でない場合は列 11)?

助けていただければ幸いです。

4

1 に答える 1

0

それは残忍ですが、うまくいくはずです。試す

UPDATE Table1
   SET column1 = (CASE WHEN column1 IS NULL THEN 'new value' ELSE column1 END),
       column2 = (CASE WHEN column1 IS NOT NULL 
                        AND column2 IS NULL THEN 'new value' ELSE column2 END),
       column3 = (CASE WHEN column2 IS NOT NULL 
                        AND column3 IS NULL THEN 'new value' ELSE column3 END),
       column4 = (CASE WHEN column3 IS NOT NULL 
                        AND column4 IS NULL THEN 'new value' ELSE column4 END),
       column5 = (CASE WHEN column4 IS NOT NULL 
                        AND column5 IS NULL THEN 'new value' ELSE column5 END)
       ...
WHERE id = 1

注: クエリの長​​さ以外に考えられる欠点は、すべての列が更新されることです。

これがSQLFiddleのデモです

于 2013-07-25T07:59:32.293 に答える