0
如果字符是數字([0-9]),我想轉換字符(我知道它總是char(1)
),如果不是數字,則返回null 。 IOW,我想捕捉異常併爲所有不可轉換字符(0-9範圍之外的字符)返回NULL。有沒有辦法做到這一點?我嘗試使用TO_NUMBER
,但如果任何行具有非數字字符,則失敗。將字符轉換爲數字(如果數字爲零或否則爲空)
如果字符是數字([0-9]),我想轉換字符(我知道它總是char(1)
),如果不是數字,則返回null 。 IOW,我想捕捉異常併爲所有不可轉換字符(0-9範圍之外的字符)返回NULL。有沒有辦法做到這一點?我嘗試使用TO_NUMBER
,但如果任何行具有非數字字符,則失敗。將字符轉換爲數字(如果數字爲零或否則爲空)
你可以使用正則表達式:
select case when regexp_like(your_string, '^[[:digit:]]+$') then to_number(your_string) else NULL end
from (select '1d23' your_string from dual);
對於char(1)
select case when ascii(c) between 48 and 57 then to_number(c) else null end
from (select '3' c from dual);
48是用於 '0' 的ASCII碼和57是ASCII碼爲 '9',ASCII功能返回參數的ASCII碼