Sql 在Oracle中,如何在插入表时处理空值

Sql 在Oracle中,如何在插入表时处理空值,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,我有一张桌子,上面有一个文件。当我使用空值(如“”或null)插入该表时,它应该转换为“DUMMY-value” --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 我可以在INSE

我有一张桌子,上面有一个文件。当我使用空值(如“”或null)插入该表时,它应该转换为“DUMMY-value”

--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
语句。 目前,我正在使用
触发器处理此问题,但是,我想知道11g中是否有任何替代方案,但是我知道oracle 12c的
默认值为NULL

您可以这样做:

create table TEST  (FIELD1 VARCHAR2(50) default 'DUMMY-VALUE'  );
当你想插入 如果值为NULL或为空,则应在不带该字段的情况下插入。您可以执行以下操作:

create table TEST  (FIELD1 VARCHAR2(50) default 'DUMMY-VALUE'  );
当你想插入 如果值为NULL或为空,则应在不带该字段的情况下插入。请尝试以下操作:

CREATE TABLE TEST (FIELD1 VARCHAR2(50) DEFAULT 'DUMMY-VALUE');
然后在
INSERT
语句中使用
DEFAULT
关键字:

INSERT INTO TEST (FIELD1) VALUES (DEFAULT);

分享和享受。

试试这个:

CREATE TABLE TEST (FIELD1 VARCHAR2(50) DEFAULT 'DUMMY-VALUE');
然后在
INSERT
语句中使用
DEFAULT
关键字:

INSERT INTO TEST (FIELD1) VALUES (DEFAULT);


共享和享受。

将列的默认值设置为
“虚拟值”
?如果值为NULL或为空,则插入时不带该字段?否,默认值将不起作用,因为NULL或“”将覆盖默认值,但是只有在插入期间未提及列名时,您的建议才会起作用。将具有默认值的列设为
“DUMMY-value”
?如果值为NULL或为空,则不插入该字段?否,默认值将不起作用,因为NULL或“”将覆盖默认值,但是,只有在插入期间未提及列名时,您的建议才起作用。只有在insert语句中未提供字段1时,此建议才起作用。显式传递NULL将绕过默认值。我的意思是:。注意,我可以显式地将NULL插入到field1中。只有在insert语句中没有提供field1时,这才真正起作用。显式传递NULL将绕过默认值。我的意思是:。注意:我可以显式地将NULL插入field1。感谢良好的提示bob,但这将强制在所有情况下插入默认值。感谢良好的提示bob,但这将强制在所有情况下插入默认值。