ORA 01722 無效數字

2021-07-22 12:32:23 字數 846 閱讀 5347



ora-01722 欄位中含有不能轉換為數字的資料,一般出現在varchar型別向number型別轉換。如果varchar型別含有非數字資料,或者含有不能合法轉換的數字,就會觸發這個報錯。

編寫函式協助找出不合法的資料記錄。

create or replace function isnumber(p_invarchar2)

return varchar is

val_err exception;

pragmaexception_init(val_err,-6502);

gd_numnumber;

begin

gd_num := to_number(p_in);

return『y』;

exception

when val_err then

return『e』;

when others then

return『n』;

end;

/以上函式是協助判斷某個

varchar2

型別的字段是否能通過

to_number

正常轉換,找到不能

正常轉換的資料記錄。

經與研發同事溝通,得知

scene_law_case

表中的lon

,lat

字段使用了

to_number()

函式轉換,

因此查詢這張表中的不合法記錄。

select * from scene_law_case t where isnumber(t.lon)<>』y』 or isnumber(t.lat)<>』y』;

將篩選出的記錄手工處理後,再嘗試。

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...

oracle報錯ORA 01722無效數字處理

原因 to number中數值有無法轉為數值型的,比如例子的 nan 字元 或者還有其他非法字元在資料裡。解決方法1 剔除無效字元 如 nan 注意這裡舉例的 nan 是示例資料中的乙個字元,不是空值nan 並且在末尾where再to number一次。select from select to n...