Oracle 判断varchar2类型是不是为空'' ,用什么判断符
VV_LIST:='DSSSFDFDSFDS';
IF(VV_LIST <>'')THEN
DBMS_OUTPUT.PUT_LINE('PPPPPPPPPPPPPPPPP');
ELSE
DBMS_OUTPUT.PUT_LINE('BBBBBBBBBBBBBBBBBBBBBBBB');
END IF;
结果却打印了BBBBBBBBBBBBBBBBBBBBBBBB
IF ('' IS NULL) THEN
dbms_output.put_line(''''' is null');
END IF;
输出:'' is null
这说明,在oracle pl/sql里,把''当成null处理了
Oracle中的空应该用的是null,非空就是not null
for example:
SQL codeSQL>setserveroutputonSQL>declare2strvarchar(20):='helloworld';3begin4ifstr<>''then5dbms_output.put_line('is not null');6else7dbms_output.put_line('is null');8endif;9end;10/isnullPL/SQLproceduresuccessfully completed.
SQL codeSQL>setserveroutputonSQL>declare2strvarchar(20):='helloworld';3begin4ifstrisnotnullthen5dbms_output.put_line('is not null');6else7dbms_output.put_line('is null');8endif;9end;10/isnotnullPL/SQLproceduresuccessfully completed.所以可以这么做:
select
st.koyu_zaisan_no
,st.koyu_zaisan_edaban
,st.shutoku_nendo --?異動年度
,st.shutokubi --?異動日
,st.kaikei
,'会計名' --?
,st.shukanka --?
,'KANJYO_KAMOKU_MEISHO' --?
,'金額'
,'err_no' --?
,'err_naiyo' --?
,'0' csv_type --?
from SHISAN_TAB st
where trim(nvl(st.chiku_cd,'')) || 'A' ='A'
or trim(nvl(st.chimoku,'')) || 'B' ='B'