--还有应是变量吧,字段你哪可以if then
if nvl(A,'')=nvl(B,'') then

解决方案 »

  1.   

    字段A = 字段B 都是NULL会失效么,没有遇到过这样写就避免了,
    nvl(字段A,0) = nvl(字段B,0)
      

  2.   

    试过了,这样写不好用啊
    貌似NULL和''的效果是一样的啊。。
      

  3.   

    写0不行啊,,,0是有数据的意思了
    TO:zhangandli你看这样写,不好用的。BEGIN
      IF NVL(NULL,'') = NVL(NULL,'') THEN
        dbms_output.put_line('YES');
      ELSE
        dbms_output.put_line('NO');
      END IF;
    END;
      

  4.   

    是的,oracle就是这样处理null的。
    请参考http://blog.csdn.net/fw0124/article/details/6210730如果需要a,b都是null的时候判断相等,可以这样
    a is null and b is null
      

  5.   

    总之一句话,,除了IS NULL、IS NOT NULL以外,对NULL的任何操作的结果还是NULL。
    对于NULL的情况,单独考虑就是了。
      

  6.   

    总之一句话,,除了IS NULL、IS NOT NULL以外,对NULL的任何操作的结果还是NULL。
    对于NULL的情况,单独考虑就是了。
      

  7.   

    你可以nvl(A,'0') = NVL(B,'0'). ''这个也是空
      

  8.   

    谢谢大家热心回帖哈。
    找到了一个function能够实现等于和不等于的判断,跟大家共有下。FUNCTION ISEQUAL 
    (
    VAR1 IN  VARCHAR2,
    VAR2 IN  VARCHAR2
    )
    RETURN NUMBER IS
    BEGIN
        IF (VAR1 IS NULL AND VAR2 IS NULL OR VAR1 IS NOT NULL AND VAR2 IS NOT NULL AND VAR1 = VAR2) THEN
           RETURN 1;
        ELSE
           RETURN 0;
        END IF;
    END ISEQUAL;
      

  9.   

    NULL是不存在  两个NULL比较应该也是FALSE吧