default '' ,default null对于字符串列有什么区别?

AechoJohn 2005-09-11 10:43:01
在把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的字符型字段时怎样处理呢?就像上面的那样?
...全文
390 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
waterfirer 2005-09-12
  • 打赏
  • 举报
回复
default ' ' not null
取的时候trim一下,如果是' '那取出来后长度就是0了

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧