今天使用Oracle查詢時候遇到了ORA01722錯誤:無效數字。
一看錯誤就是資料類型不比對造成的,我的查詢字段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'
結果如下:
如上所示,該字段初看長度是8實際長度是9,很可能裡面多了空格。
解決方法:把空格去掉。
全文完。