ID      JH            LX (varchar2,2)     988    ll-444            空
988    lw-34             空
select id,jh from tablename where id=988 and lx<>'AA'你们猜,结果应该是什么?记录集应该有几行数据?
结果是0行!

解决方案 »

  1.   

    我也觉得oracle不会这么差的,可是现实就是如此!我不知道服务器那边究竟是怎么设置的,是oracle9i 。
      

  2.   

    应该是:
    select id,jh from tablename where id=988 and lx<>'AA' and lx is not null
    我觉的不是什么ORACLE的BUG, 是你理解空值的概念有问题
      

  3.   

    select id,jh from tablename where id=988 and lx<>'AA' and lx is not null
    这样就把空值排除在外了,我需要空值。我理解空值有问题,但是难道access,sql server也有问题吗?人家可不是这样的,空值应该不等于任何值!
      

  4.   

    这个是你的理解问题
    空值不匹配任何查询
    oracle这样处理是正确的,或者说它这样处理是手册上说的很清楚的,并不是它处理错误
      

  5.   

    空值不匹配任何查询
    sql server也一样
      

  6.   

    原来 Access也是这样的,空值=任何值!我完蛋了,这么多年的英名毁于一旦!变成真正的S B了,将S B进行到底!
      

  7.   

    完了,栽了栽了,回去查以前的SQL语句吧!操 他 妈的!
      

  8.   

    我觉的也没有错啊。
    空值不是任何值,如果空值是任何值的话返回值就是2了。
    你那样选返回的结果是正确的。
    哪你说返回什么结果?
    如果你条件写lx is null
    哪在看看结果~~
      

  9.   

    SQL Server 也一样呀  
    最好,设置默认值!
    NUll<>‘’的!
      

  10.   

    楼主,你也明白空值不等于任何值,哪你写条件lx<>'AA',空值是没有办法和AA比较的。
    因为他不是任何值所以,无发比较就不返回此记录。
      

  11.   

    Sant11(S蚂蚁11) :我觉得,既然空值不是任何值,那么它就是不是AA,所以lx<>'AA'就应该包括空值,是不是?
      

  12.   

    这个select语句根本就不会检索出任何数据
    因为lx<>'AA'可以是任何值 
    如果lx不为空时可以检索出数据
    但是你定义的是空值,没检索出数据就对了
    所以这个空值不会等于任何值的
    SQL2000上查询的时候也差不多的
    就看字段怎么定义了
      

  13.   

    这个select语句根本就不会检索出任何数据
    因为lx<>'AA'可以是任何值 
    如果lx不为空时可以检索出数据
    但是你定义的是空值,没检索出数据就对了
    所以这个空值不会等于任何值的
    SQL2000上查询的时候也差不多的
    就看字段怎么定义了
      

  14.   

    看来用“=”就没有这些问题了,用“=”更明确,以后不用“<>”号了。
      

  15.   

    其实我的思维是:空值不是任何值,空值不等于任何值,所以null<>'AA'应该成立。结果,不成立,呜...
      

  16.   

    空值不匹配任何查询
    这不能算一个bug吧,只是一个域的定义,而且oracle这个定义更加符合严谨的数学逻辑。空值不是值我想确实的应该是item status吧,就类似于newmodified一样。而这个定义是由人给出的,而且是比较严谨的数学意义上的定义。当然在厂商可以在表达形式上可以做到你说的。至于上面说的空值不是任何值也不算严谨。既然不是值那就谈不上任何值。两个不同域内的个体相互比较,除非需要预先定义要不不好比较。在常理上搂主的思维不能算是错.比方我们办公室里面不是女人的当然是男人,但是有人却说还有两台计算机也不是女人,呵呵,一个范围罢了。中文上的不是并不等于离散数学中的非。
      

  17.   

    select id,jh from tablename where id=988 and (lx<>'AA' or lx is  null)
    这样如何???