两者有区别吗

解决方案 »

  1.   

    当然有区别,空字符串可以认为就是NULL,但NULL不一定就是空字符串,要随字段的数据类型而定,比如NUMBER型字段,NULL认为是空值,而不是什么字符串。
    个人的一点浅见
      

  2.   

    你所理解的空是指Null和''吗?null 一般来说不会占存储空间
    但'' 是会占用的
      

  3.   

    一样的SQL> select 1 from dual where '' is null;         1
    ----------
             1
      

  4.   

    一般情况下,都可以认为''就是null,我想oracle应该是先把''作为空字符串处理成null,再作其他处理的,就像bzszp(SongZip)老大的例子,'' is null 是成立的,两者是等价的,下面例子又可以看出''和null不是完全等价的:
    SQL> select 1 from dual union select '' from dual;select 1 from dual union select '' from dualORA-01790: 表达式必须具有与对应表达式相同的数据类型SQL> select sysdate from dual union select '' from dual;select sysdate from dual union select '' from dualORA-01790: 表达式必须具有与对应表达式相同的数据类型这里union要先判断2个select 子句的字段类型是否匹配,显然''和数字、日期类型都不能匹配,而null可以和任何数据类型匹配,上面把''换成null就不会出错了
    SQL> select 1 from dual union select null from dual;         1
    ----------
             1
      

  5.   

    不同,楼主所说的空值是指字符串的''值吧。空值是有值的,即值为空,NULL值是没有值,任何数据类型的值都可以为NULL值。
    说白了,一个是有值,一个是无值,当然不同啦。
      

  6.   

    duanzilin(寻) ( ) 信誉:120 說的實在是好啊
      

  7.   

    SELECT '' FROM dual UNION SELECT NULL FROM dual;只得到一行!!!
      

  8.   

    在Oracle中,如果是字符类型,两者是一样的。即数据库中''保存的是nullSql Server 中两者完全不一样。''则保存'',null则保存null。
      

  9.   

    同意xhwly(wly)的观点,在概念上这是两个不同的概念
    空值通常是指字符串的‘’,是字符型,而null不属于任何类型。
      

  10.   

    多次实验证明,在oracle中,向字符字段插入'',DBMS会以NULL处理。
    所以,不能向非空字符字段插入''。
    很奇怪oracle为什么要这样设定。
      

  11.   

    null代表空,而''代表空字符串。
      

  12.   

    在oracle中千万不要这样用:if nvl(v_aa,'') = '' then  --这个条件永远都不可能成立
     ...
    else
      ...
    end if
      

  13.   

    null是无类型的,''是字符型的null,仅此而已