这个Null是很麻烦的,SQL语句中写=''都不行,必须得写成 is null

解决方案 »

  1.   

    空值是要用IS NULL 来判断的吧,null表示一个不确定的值,lx<>'AA'不能判断lx为null的情况
      

  2.   

    select id,jh from t_jiayu where id=988 and nvl(lx,'g72gds8a2da3hds~')<>'AA'
    你可以对lx字段用nvl()函数来设定一个很长的奇怪的字符串,不就okle
      

  3.   

    null表示一个不确定的值,lx<>'AA'不能判断lx为null的情况
      

  4.   

    oracle 就是这样处理的。null 不等于任何值,而不是等于任何值。你可以试一下
    select id,jh from tablename where id=988 and lx='AA'  ,看看是什么结果
      

  5.   

    我晕,这年头居然经常有人发现oracle的重大bug,这里还有一个:http://www.itpub.net/255554.html
      

  6.   

    drabit(square):这难道不是它的BUG吗?空值=任何值?这难道说得过去吗?空值应该是什么都没有,怎么可能是“不确定”?我觉得oracle的思维有问题!
      

  7.   

    原来ACCESS也是这个B样的,看来美国的S B和中国S B的思维确实不一样啊,打倒美D国主义!
      

  8.   

    NULL是ORACLE 一个特殊处理的值,在好多资料上会有介绍的,要想把它理解好需要一段时间实践的, 虽然有点难度。但绝对不是BUG!
      

  9.   

    When working with nulls, you can avoid some common mistakes by keeping in mind the following rules: Comparisons involving nulls always yield NULL
     Applying the logical operator NOT to a null yields NULL
     In conditional control statements, if the condition yields NULL, its associated
    sequence of statements is not executed If the expression in a simple CASE statement or CASE expression yields NULL, it
    cannot be matched by using WHEN NULL. In this case, you would need to use
    the searched case syntax and test WHEN expression IS NULL.
    PL/SQL treats any zero-length string like a null. This includes values returned by
    character functions and Boolean expressions.
      

  10.   

    以后还真得注意这个问题,我觉得以前SQL可能都存在漏洞,特别是用<>来判断的。
    其实我的理解是这样的:空值---不是任何值;
    既然不是任何值,那么它就一定不是'AA'
    既然不是'AA',那么lx<>'AA' 就应该成立
    既然成立,数据集里就应该包括这一行。
    看来,所有的NULL值并不参与判断。
      

  11.   

    感觉不是bug,是你理解有误吧,你没理解oracle的null
      

  12.   

    这不是一个BUG,在oracle里,空值不存在等于什么,也就是NULL='A'是false,同时NULL<>'A'也是false.
      

  13.   

    mssql server中的情况也是这样的。
    null应该理解成不等于任何值
      

  14.   

    这不是bug,在oracle里很多资料都有介绍到这一点,OCP教材都有说到这个知识点.
    oracle提供一些方法来处理null值的问题.比例:nvl(),nvl2(),is null ,is not null等.
      

  15.   

    JeromeLiu(烛光) ( ) :null应该理解成不等于任何值
    ================================对呀,既然它不等于任何值,那么它不等于AA不就应该成立吗?
    我觉得在这方面,SQL语言应该和平常的程序语言一致,因为我们平时在程序中判断NULL<>'AA'是成立的。  
     
      

  16.   

    搂主看看下面的这个帖子,里面关于null阐述的比较详细:
    http://community.csdn.net/Expert/topic/3141/3141492.xml?temp=.2455408