日期:2014-05-17 浏览次数:20950 次
--------------------------------------- --测试 -- 查询EMP表中MGR为NULL的行: SQL>select * from emp where mgr=''; no rows selected SQL>select * from emp where mgr=null; no rows selected SQL>select * from emp where mgr is null; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO --------- ---------- --------- --------- --------- --------- --------- --------- 7839 KING PRESIDENT 17-NOV-81 5000 10 -- 第1、2句写法有问题,WHERE条件结果为NULL,不返回行。第三句正确,返回MGR为空值的行。
------解决方案--------------------
显然oracle的处理更方便不是吗,
用户才不关心是空串还是控值,看起来都是没数,差不离。
程序员更欢迎了,可以每次少写一个条件。
------解决方案--------------------
同意樓上!
------解决方案--------------------
搂住还是不太熟悉Oracle的处理策略。
而且,从物理模式去理解。
一个空的字符串就是什么都没有,oracle也什么都没有存。
你去出来比较的时候''就和null一样。
而SQLServer的做法是即使什么都没有,也要有一个字符串结束标记,至一点类似C语言的字符串处理。
两种方式,不好说谁好谁坏。只是见仁见智而已。
------解决方案--------------------
我不知道有啥地方麻烦,
大不了还有个函数叫nvl。
------解决方案--------------------
oracle 是这样的,空字符串就变成空了
------解决方案--------------------
用函数nvl
------解决方案--------------------
好像概念还是没有理解:就第一个例子,not null ,而你又insert 空,自己自相矛盾啊
------解决方案--------------------
某星球人习惯上给放屁增加了仪式来象征身份,脱了裤子放屁的跟不脱裤子放屁的是两种身份,大家习惯了,看到放屁的就问:脱了裤子放的还是穿着裤子放的?
有一天,地球人去做客,聊起某领导说话象放屁,该星球人马上下意识的问:脱裤子放的还是穿裤子放的?
地球人回答:就是放屁!
呵呵,习惯而已
有些语言习惯把什么都没有但没占位置和什么都没有但占了位置区分开,所有看到什么都没有,就习惯上问一下:是占位空还是不占位空?
有些语言习惯上就不给空的占位子,占不占位都当是空的,所以习惯前一种模式的人一时就不容易习惯了
------解决方案--------------------
只能漫漫适应oracle 的规则了
------解决方案--------------------
路过学习以下。这么说确实与mssql差别很大。
特别是在insert '' 这个情况.可是想不通为什么在where的条件下又变味了呢?
我想楼主也是这个意思吧。
------解决方案--------------------