当前位置: 首页 > 图文教程 > 数据库 > Oracle > MS Server和Oracle中对NULL处理的一些细节差异

Oracle
如何从Oracle 9i SQL*Loader中生成外部表定义
简单冷备份恢复操作步骤
解决ASM无法启动问题
将Oracle的数据导入EXCEL中的方法
Oracle数据库在线备份原理
利用SQL * Plus复制遗留的Oracle数据表
分析Oracle下导出某用户所有表的方法
利用SQL *Plus复制遗留的Oracle数据表
解决Oracle下的undo空间过大的问题
如何使用Oracle 10gR2's RMAN进行加密备份
利用多个转储文件导出大量Oracle数据
用Rsync备份Dreamhost 到Windows 上
从Access 2000数据库转移到Oracle 9i
利用Oracle执行计划机制提高查询性能
Oracle的自动数据库诊断监控程序剖析
教你Oracle的数据缓冲区是如何工作
Oracle DBA数据库日常维护完全手册
合理设置数据库以提高查询统计速度
Oracle数据库数据锁定机制全面解析
DBA 应遵循的 Oracle 调优原则

MS Server和Oracle中对NULL处理的一些细节差异


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 62 ::
收藏到网摘: n/a

SQL Server和Oracle中对插入数据值包含空的处理有所差异,在SQL Server中,我们可以把表字段设计为非空,但我们仍然可以通过下面语句执行插入操作 INSERT INTO Table (TestCol) VALUES(‘')
其中的TestCol字段,其实在设计的时候,已经被设计为NOT NULL,但我们需要了解一点,在sql server中,null和空格是不同的,也就是说,上面的语句插入的是一个空,但并不是NULL,只有当我们的插入语句中没有该字段的时候,才会被认为违反非空的条件约束,这里可能用英文的表达可能会更加的准确一些,如果把NULL翻译成“空”的话,可能就会很容易搞混了。此外,如果我们的字段是INT类型的话,如果我们插入空的话,会得到一个0,也就是说,MS Sql server会自动帮我们处理对空格的转化。
但是在Oracle中,这个便利便不存在咯,我们必须严格按照规则来进行插入,也就是说,我们再想视图通过插入空来满足NOT NULL的设计约束,已经不能成功啦,我们必须插入实实在在的内容才能符合NOT NULL的约束。
像类似地一些细节在我们设计既要满足MS Sql,又要满足Oracle的系统地时候,尤其会成为我们需要处理的家常便饭,这一方面要求我们要严格规范我们的sql脚本,再者也要对程序处理语句进行严格的条件控制才行,否则类似地问题在联调的时候会让我们陷入一个接着一个的噩梦~