2014-04-30 66 views
0

我有一個表,它有一個字段。當我在表中插入空值(如''或null)時,它應該轉換爲'DUMMY-VALUE'。在Oracle中,如何在插入表時處理NULL值

--Have one table; 
CREATE TABLE TEST (FIELD1 VARCHAR2(50)); 

--When I insert '' 
INSERT INTO TEST(FIELD1) VALUES(''); 

SELECT * FROM TEST 
--Expected Result 'DUMMY-VALUE' but not NULL 

我可以在INSERT聲明適用NVL('','DUMMY-VALUE')但我不允許只改變CREATE聲明。 現在我用TRIGGER來處理這個問題,但是想知道在11g中是否有其他選擇,但是我知道oracle 12c的DEFAULT ON NULL

+5

如何將默認值設爲「DUMMY-VALUE」?如果值爲NULL或空則插入沒有該字段? – TechDo

+0

不,默認值將不起作用,因爲NULL或''將覆蓋默認值。但是,只有在插入過程中未提及列名時,您的建議纔有效。 – touchchandra

回答

2

你可以這樣做:

create table TEST (FIELD1 VARCHAR2(50) default 'DUMMY-VALUE' ); 

,當你想插入 你應該沒有這種字段中插入其中的值是否爲空或空

+1

只有在插入語句中沒有提供FIELD1的情況下,這纔會真正起作用。顯式傳遞NULL將繞過默認值。 –

+0

同比可以看看這個:http://sqlfiddle.com/#!4/68dbf/1/0 –

+0

我的意思是:http://sqlfiddle.com/#!4/02938/1。注意我可以顯式地將NULL插入到field1中。 –

2

試試這個:

CREATE TABLE TEST (FIELD1 VARCHAR2(50) DEFAULT 'DUMMY-VALUE'); 

然後在INSERT聲明中使用DEFAULT關鍵字:

INSERT INTO TEST (FIELD1) VALUES (DEFAULT); 

SQLFiddle here

分享和享受。

+0

感謝您的好提示bob,但是這將強制在所有情況下插入DEFAULT。 – touchchandra