问题描述
我需要将 100 多行数据插入具有 25 个文本列的表中。 我只想在这些列中插入一些数据,其余的用空格表示。
(注意:PeopleSoft 表上的文本字段被定义为 NOT NULLABLE,单个空格字符用于表示没有数据而不是 null。)
有没有一种方法可以编写不定义所有列以及空格的插入语句。举个例子:
INSERT INTO CUST.RECORD(BUSInesS_UNIT,PROJECT_ID,EFF_STATUS,TMPL,DESCR) VALUES('TOO1','PROJ1','A','USA00','USA00 CONTRACT');
对于 CUST.RECORD 中的所有其他列,我想插入“ ”而不定义插入中的列或空格。
解决方法
一种方法是在表定义中设置默认值,如下所示:
CREATE TABLE CUST.RECORD(
id NUMBER DEFAULT detail_seq.NEXTVAL,master_id varchar2(10) DEFAULT ' ',description VARCHAR2(30)
);
编辑:对于您的表格,您可以使用:
alter table CUST.RECORD modify( col2 varchar2(10) default ' ' );
,
您不必为特定列提供值IF任一条件为真:
- 该列被定义为可以为空。也就是说,它不是用“not null”子句定义的。
或
-
用默认值定义列
SQL> 创建表 my_test(my_id 号不为空, 2 fname varchar2(10),-- 可以为空 3 dob date default sysdate -- 默认值 4) 5;
表已创建。
SQL> -- SQL> -- 只为 my_id 提供值 SQL> 插入 my_test(my_id) 值 (1);
已创建 1 行。
SQL> -- SQL> -- 并查看结果 SQL>选择* 2 来自 my_test;
MY_ID FNAME DOB
1 12-MAR-21
选择了 1 行。
SQL> -- SQL> 选择 my_id, 2 nvl(fname,'NULL'),3 多 4 来自 my_test;
MY_ID NVL(FNAME,DOB
1 NULL 12-MAR-21
选择了 1 行。