使用Oracle時,在測試環境中卻報出:ORA-01722: 無效數字 異常。
檢查了一遍sql語句也沒發現什麼問題。後來查出是因爲Where 條件後 “列名=數字” 造成的。
表中有一列 :district_code 字段類型是 VARCHAR2(20)
,因爲最開始時裏面的值都是數字類型 所以sql 中直接寫 district_code =330400
. 這樣查詢沒報錯是因爲 oracle 做了隱式轉換。也就是T0_NUMBER(district_code )=330400 ,
這時當數據庫中出現瞭如 a b c d 這些字符時,TO_NUMBER 就會觸發ORA-01722 錯誤了。所以以後要做到在寫sql語句時就得認真處理好不同類型的問題 用單引號把值給套上district_code ='330400'