在oracle中把空串认为是null,不是''

解决方案 »

  1.   

    CodeMagic 写道:
    在oracle中把空串认为是null,不是''
    -------------------
    我是不明白Oracle这样设计的原因,既然你都可以把''自动转换为null储存了,
    你为什么又不能用 ='' 这样的表达式来查询呢。
    我一直是这样认为,你存进什么数据进去,你就当然可以用=表达式将该数据查出来。如果只是针对''这种特殊例子需要特殊对待的话,那 ='' 的这种表达式又有什么存在的意义?
      

  2.   

    ->insert into test values('1');已创建 1 行。->commit;提交完成。->select * from test;NAME
    __________
    1已选择 1 行。->update test set name='';已更新 1 行。->commit;提交完成。->select * from test;NAME
    __________
    已选择 1 行。->select * from test where name='';未选定行->select * from test where name is null;NAME
    __________
    已选择 1 行。
    理由很简单,既然''认为是null,name的值也是null,判断null=null不能返回真,只能用is null
      

  3.   

    SQL> select 1 from dual where null=null;         1
    ----------SQL> select 1 from dual where 1=1;         1
    ----------
             1很明显,oracle当字段为null时,强行与其它值相关联时,不会被选出来.
      

  4.   

    古怪啊,null=null不能返回真,这又是为啥那?
      

  5.   

    null表示不确定的值,当两个不确定的值比较的时候,你不能就认为它们一定相等(即表示相同的值)
      

  6.   

    null 除了'is null'操作外,其他任何操作返回的值都是null,既然where字句的条件是null,那么就不会返回任何数据了