webservice開發過程中,資料庫由原來的oracle改為現在的sql server。然後重新除錯,結果報出ora 01722無效數字的錯誤。
由於連線oracle資料庫的時候並沒有問題,所以一開始我以為是資料庫不同,導致部分資料型別差異,(但又覺得有點離譜,切換資料庫,不至於會導致這種錯誤吧)
經過排查,總結得出如下:
1、對於兩個型別不匹配(乙個數字型別,乙個非數字型別,同下)的值進行賦值操作;
2、兩個型別不匹配的值進行比較操作(例如,「=」);
3、to_number函式中的值,非數字的,比如,to_number('a')肯定是不行的,to_number('123')則是正常的。
想要避免此問題或者類似問題,必須做到:
1、對資料庫資料型別瞭如指掌
2、在資料交換過程中,必須清楚請求,相應的資料型別
3、在複雜的sql中,需要清楚所有資料型別,逐一排查
結果證明我一開始的想法並沒有科學依據,事實證明結論,實踐鞏固理論。
ORA 01722 無效數字
ora 01722 欄位中含有不能轉換為數字的資料,一般出現在varchar型別向number型別轉換。如果varchar型別含有非數字資料,或者含有不能合法轉換的數字,就會觸發這個報錯。編寫函式協助找出不合法的資料記錄。create or replace function isnumber p i...
ORA 01722 無效數字
場景 同樣的 同樣的資料庫表結構,但生產環境沒有報錯,而測試環境卻報錯 ora 01722 無效數字,分析 經分析發現問題,查詢語句中的乙個條件欄位為字元型,而傳的引數是long型別,撈出語句放在生產庫查詢不報錯,測試庫報錯,確定應該是資料庫資料問題。場景重現 建個測試表 create table ...
ORA 01722 無效數字
產生原因 型別不匹配 我本次遇到的錯誤是 型別不匹配的插入操作 錯誤摘錄 declare ls djxh number 20 begin for v cur in select djxh from xx loop insert into ylcs.fp dk sq djxh,values ls dj...