你這樣做嗎?
創建測試表...
create table test_table(Name VARCHAR2(10), Age NUMBER(10), City VARCHAR2(10));
插入樣本數據...
insert into test_table(Name, Age, City) values('N', 22, 'J');
insert into test_table(Name, Age, City) values('K', NULL, 'K');
insert into test_table(Name, Age, City) values(NULL, 23, 'L');
commit;
數據是這樣的......
SQL> select * from test_table;
NAME AGE CITY
---------- ---------- ----------
N 22 J
K K
23 L
最後編程方式更新樣本數據使用CASE語句...
update test_table
set Name = (CASE WHEN Name IS NULL AND Age >= 23 THEN 'John' ELSE Name END)
,Age = (CASE WHEN Age IS NULL AND Name = 'K' THEN 21 ELSE Age END)
;
commit;
3 rows updated
,現在的數據是這樣的......
SQL> select * from test_table;
NAME AGE CITY
---------- ---------- ----------
N 22 J
K 21 K
John 23 L
請注意,如果您在大型表上執行此操作,它將更新這兩個字段,併爲表中的每一行生成重做。我會添加'WHERE名稱是空的或年齡是空'。 – 2010-08-25 15:28:44
此查詢正在爲我工作... – Nits 2010-08-27 10:47:43