更新最低(原样)空列

时间:2013-07-25 07:49:06

标签: sql oracle

在我的OracleDB中,有一个包含100列(1-100)的表。我需要一个查询来更新具有值的最低空值(例如1),并且无法自己计算出来。如何始终获得最低的空列(例如,如果列1-10不为空,则为第11列)?

感谢任何帮助。

1 个答案:

答案 0 :(得分: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 演示