天天看點

ORA-01722無效數字錯誤解決記錄

      今天使用Oracle查詢時候遇到了ORA01722錯誤:無效數字。

ORA-01722無效數字錯誤解決記錄

      一看錯誤就是資料類型不比對造成的,我的查詢字段key_1雖然是varchar2類型的,但裡面放的是number數字,檢視aa表type_1字段裡面值是沒有非數字(數字類型)。我的查詢語句如下:

select nvl((select value_1
             from static_mapp_table
            where key_1 = aa.type_1
              and key_type = 'TEST'),
           '未知')
 from aa
           

     簡單的說static_mapp_table是一個類似Map的表,裡面有key,value根據類型一一對應。

aa表的type_1字段确認不可能出問題,檢視static_mapp_table表裡面key_1字段都是數字,

而是直接使用:

select * from static_mapp_table where key_1='10000018' and key_type='TEST'
           

    查詢,查詢結果居然是NULL,而是懷疑該字段裡面有非數字類型存在,直接使用:

select value_1,length(value_1)
  from static_mapp_table
 where 1 = 1
   and key_type = 'TEST'
           

    結果如下:

ORA-01722無效數字錯誤解決記錄

     如上所示,該字段初看長度是8實際長度是9,很可能裡面多了空格。

     解決方法:把空格去掉。

     全文完。