在把MS Sql 数据库转换成Oracle 的过程中发现它们对Default字段的处理方式不一致。
在Oracle中看如下语句:
drop table testtable ;
create table testtable
(
"No" number default 0 not null ,
"Note" varchar2(1024) default '' not null
);
commit ;insert into testtable ("No","Note") values(1,'test');
insert into testtable ("Note") values('test') ;
insert into testtable ("Note") values('') ;
insert into testtable ("No") values(2);
commit ;返回结果如下:
表已丢弃。
表已创建。
提交完成。
已创建 1 行。
已创建 1 行。insert into testtable ("Note") values('')
*
ERROR 位于第 1 行:
ORA-01400: 无法将 NULL 插入 (...."Note")
insert into testtable ("No") values(2)
*
ERROR 位于第 1 行:
ORA-01400: 无法将 NULL 插入 (...."Note")提交完成。说明:
insert into testtable ("Note") values('') ;
insert into testtable ("No") values(2);
这两句无效。即在Oracle中''(长度为0的字符串)被做为NULL处理了(而在MS Sql 中以分出NULL与'')。是不是可以这样理解?
请高手指点指点:如果确定需要默认长度为0的字符型字段时怎样处理呢?就像上面的那样?
在Oracle中看如下语句:
drop table testtable ;
create table testtable
(
"No" number default 0 not null ,
"Note" varchar2(1024) default '' not null
);
commit ;insert into testtable ("No","Note") values(1,'test');
insert into testtable ("Note") values('test') ;
insert into testtable ("Note") values('') ;
insert into testtable ("No") values(2);
commit ;返回结果如下:
表已丢弃。
表已创建。
提交完成。
已创建 1 行。
已创建 1 行。insert into testtable ("Note") values('')
*
ERROR 位于第 1 行:
ORA-01400: 无法将 NULL 插入 (...."Note")
insert into testtable ("No") values(2)
*
ERROR 位于第 1 行:
ORA-01400: 无法将 NULL 插入 (...."Note")提交完成。说明:
insert into testtable ("Note") values('') ;
insert into testtable ("No") values(2);
这两句无效。即在Oracle中''(长度为0的字符串)被做为NULL处理了(而在MS Sql 中以分出NULL与'')。是不是可以这样理解?
请高手指点指点:如果确定需要默认长度为0的字符型字段时怎样处理呢?就像上面的那样?
解决方案 »
- oracle 10G自动备份
- 关于时间格式转换,一个简单的问题
- 小计和总计的语句怎么写?
- 重发关于GROUP BY 的问题 (字段内容有变动)
- 为何到了FOR yy in 1...10 LOOP就总是跳过了整个loop呢?
- 大家有没有从linux 32位 oracle 10g 导数据 到solaris 下64位 oracle10g 的经历?我导的数据有错误呢?而且从外连接查询到的数据也跟原数
- 初学sql的问题
- 1个数字:2,1个集合(1,2,3)。如何能用SQL语句求出在集合中不包含这个数字的其他数字?不要建表,可以实现吗?
- 请问如何取出date型数据的所有部分
- Oracle Sql/Plus 调试问题,请教。。。
- 如何把日期转换成这样的串:MM/DD/YYYY HH:MI:SS AM/PM eg. 12/14/2005 12:50:54 AM
- 请高手指点:如何提高数据插入的速度,急
取的时候trim一下,如果是' '那取出来后长度就是0了