Oracle報錯ORA-01722: 無效數字,排查分析


主要原因是:
1、對於兩個類型不匹配(一個數字類型,一個非數字類型,同下)的值進行賦值操作; 2、兩個類型不匹配的值進行比較操作(例如,“=”); 3、to_number函數中的值,非數字的,比如,to_number('a')肯定是不行的,to_number('12306')則是正常的。 要避免這些問題,要做到在寫sql語句時就好認真處理好不同類型的問題。 比如如果要比較的話,同時都用to_number強制轉換(to_number(字段a) = to_number(字段b)),或者同時轉換為字符串類型(字段a||'' = 字段b||'',都連接一個空字符串使之變成字符串類型)。 在語句中使用to_number函數時,要保證值一定是數字格式,或者寫好異常處理。 
當sql復雜的時候,難免有錯誤,當我們碰到這個錯誤提示時,就從所有用到的數字類型的字段開始檢查,逐一排查,從而解決問題。 參考:http://blog.csdn.net/yysyangyangyangshan/article/details/51762746


DECODE中既有數字又有字符 SELECT DECODE('XXX','A',1,'-') FROM DUAL;
ROUND使用了字符 SELECT ROUND('-',2) FROM DUAL;
TO_NUMBER使用了非數字字符 SELECT TO_NUMBER('111A') FROM DUAL;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM