使用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'
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...