select 
decode(trim(A.TERM),'',A.TERM,decode(trunc(trim(A.TERM)/30),0,trim(A.TERM)||'D',trunc(trim(A.TERM)/30)||'M'||mod(trim(A.TERM),30)||'D'))
from A
这个语句,为什么字段A.TERM存在空时,会报错ORA-01722:无效数字?有什么办法解决吗?先行谢过!

解决方案 »

  1.   


    --經測沒錯,應不是空引起的
    SQL> create table A(TERM varchar2(20));已建立表格.SQL> insert into A values(null);已建立 1 個資料列.SQL> insert into A values('');已建立 1 個資料列.SQL> select trunc(trim('')/30) from dual;TRUNC(TRIM('')/30)                                                              
    ------------------                                                              
                                                                                    
      

  2.   


    --應貼這個
    SQL> select
      2  decode(trim(A.TERM),'',A.TERM,decode(trunc(trim(A.TERM)/30),
      3  0,trim(A.TERM)||'D',trunc(trim(A.TERM)/30)||'M'||mod(trim(A.TERM),30)||'D'))
      4  from A
      5  ;DECODE(TRIM(A.TERM),'',A.TERM,DECODE(TRUNC(TRIM(A.TERM)/30),0,TRIM(A.TERM)||'D',
    --------------------------------------------------------------------------------