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 回答