发现一个奇怪的问题啊!
有一个tab数据如下啊table name: tabAid(pk) filed1(varchar)
1           1  
2           
3           2
4           null然后执行sqlselect * from tabA where filed1 <> '12345'第二条记录竟然没有返回,只返回下面的~难道“空” 等于’12345‘?
id(pk) filed1(varchar)
1           1  
3           2
4           null

解决方案 »

  1.   

    select * from tabA where filed1 = '12345' 能把他取出来?你之前做的操作都COMMIT了?
      

  2.   

    NULL不可以做对比,只能使用is null来筛选,使用= <>都不能筛选出NULL类型的数据
      

  3.   

    没有啊我是说这条sql:
    select * from tabA where filed1 <> '12345'结果是:
    id(pk) filed1(varchar)
    1 1   
    3 2
    4 null我不太明白为啥啊?
      

  4.   

    这就对了,真正的NULL是你看不到的那个NULL,就是空值,你最后一条那个null是实际存储的值
    NULL与任何值比较或做数学运算,除非使用IS NULL或IS NOT NULL,否则都为UNKNOWN,当然查不出来啦,你改为
    select * from tabA where filed1 <> '12345' OR filed1 IS NULL;
      

  5.   

    这个结果就是对的啊....null空值不能做对比...所以出不来那条
    而你第4条null是字符值填的'null'吧
      

  6.   

    filed1 <> '12345' 从结果看就应该是把 is null 的剃掉了  而你第四条的filed1值也显示出来估计是
    filed1 的值为null 不在is null的条件内