NVL(TRIM(l_Result), '银行') ='银行'

解决方案 »

  1.   

    I_Result获得的值是空值还是null,这个要先搞清楚,空值跟null值应该不一样的。
      

  2.   

    SQL> declare v_i varchar2(20);
      2  v_j varchar2(20);
      3  begin
      4  v_i:=null;
      5  v_j:=' ';
      6  if v_i is null then
      7  dbms_output.put_line('v_i is null');
      8  else
      9  dbms_output.put_line('v_i is not null');
     10  end if;
     11
     12  if v_j is null then
     13  dbms_output.put_line('v_j is null');
     14  else
     15  dbms_output.put_line('v_j is not null');
     16  end if;
     17  end;
     18  /
    v_i is null
    v_j is not null
      

  3.   

    在你的IF前面加 dbms_output.put_line(l_Result);
    看一下到底输出的是空值还是null.
      

  4.   

    楼主可以再加一个判断l_Result为‘’时,是怎么样的,可能就是这个原因
      

  5.   

    纠正一下,''和null一样,都是空值
    ''不能用等式来比较,只能使用is null& is not null
    1楼的意思是该字段可能存在空格,因此用trim截掉,这个写法相当于l_Result is null or l_Result='银行' or I_result='若干空格'
    可以简化代码
    如果在sql语句中,不要这么写
      

  6.   

    8楼正解。感觉露珠可能是把空格当成null了
      

  7.   

    1、楼上所说 是不是含有空格,这个作去空格处理。
    2、楼主应该还应该确认的是返回为null还是根本没有查询到数据报错no_data_found。
      

  8.   

    今天上午刚刚遇到此类问题
    你可以用NVL(x,value) 这个单行函数试一下
    NVL(x,value) :如果x为空,返回value,否则返回x。
      

  9.   

    很可能输出的是空格而不是NULL,这个两个概念