一個sql查詢語句報ORA-01722

wxjzqym發表於2011-05-27

    今天一個開發人員說一個很普通的sql語句提示ORA-01722:invalid number,該sql語句為
select to_number(paraid,'xxxxxxxxxx') paraid,sortid,dataid from scpparsereg;一個很簡單的sql語句,開發人員說使用pl/sql顯示全部記錄時到第1000條時報這個錯誤,那證明前999條記錄顯示是正常的,整個sql語句就一個簡單得不能再簡單的sql語句,其中能出問題的就是使用了一個轉換函式to_number,於是使用desc scpparsereg中顯示錶結構,發現paraid是個char(8)的資料型別,懷疑可能是字元不夠自動補空格,然後在此情況下進行轉換時報錯,接著透過select distinct length(trim(paraid)) from scpparsereg該sql語句得到了答案:
  1* select distinct lengthb(trim(parseid)) from scpparsereg
idle> /

LENGTHB(TRIM(PARSEID))
----------------------
                     8
                     7
    從以上結果就可以斷定是由於空格轉換成數字時發生該錯誤。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/20801486/viewspace-696431/,如需轉載,請註明出處,否則將追究法律責任。

相關文章