場景:同樣的**同樣的資料庫表結構,但生產環境沒有報錯,而測試環境卻報錯:ora-01722: 無效數字,
分析:經分析發現問題,查詢語句中的乙個條件欄位為字元型,而傳的引數是long型別,撈出語句放在生產庫查詢不報錯,測試庫報錯,確定應該是資料庫資料問題。
場景重現:
建個測試表:
create table test_invalide_num
(id number(12) not null,
status_cd varchar2(6) not null
)其中status_cd欄位為字元型,然後我們插入數字,如下圖:
[img]
然後進行查詢,結果正常並沒有報錯,如下圖:
[img]
接著我們再插入一條資料,如果下圖:
[img]
然後再進行查詢,結果報錯了,如下圖:
[img]
總結:查詢條件引數型別一定要匹配,雖然不匹配不一定會報錯,但匹配一定不會報錯,同時如果型別不匹配,有索引的話會不起作用,影響效能。
ORA 01722 無效數字
ora 01722 欄位中含有不能轉換為數字的資料,一般出現在varchar型別向number型別轉換。如果varchar型別含有非數字資料,或者含有不能合法轉換的數字,就會觸發這個報錯。編寫函式協助找出不合法的資料記錄。create or replace function isnumber p i...
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...
oracle報錯ORA 01722無效數字處理
原因 to number中數值有無法轉為數值型的,比如例子的 nan 字元 或者還有其他非法字元在資料裡。解決方法1 剔除無效字元 如 nan 注意這裡舉例的 nan 是示例資料中的乙個字元,不是空值nan 並且在末尾where再to number一次。select from select to n...