接到一個需求要判斷一個varchar2字段的值是否是數字,如果不是數字,就置為null,如果是數字,就使用to_number把它變成num類型。
找到兩種辦法。
方法一:
用trim和translate來判斷,這種方法比較麻煩,代碼如下:
SELECT
TO_NUMBER(t.ITM_VAL) test
,t.ITM_VAL
from EMR.T_REC t where trim(translate(t.ITM_VAL,'0123456789.',' ')) is NOT NULL
方法二:
使用替換方法,把非數字和小數點的字符變為空,然后使用to_number,代碼如下:
SELECT TO_NUMBER(REGEXP_REPLACE(t.ITM_VAL,'[^0-9.]','')) test ,t.ITM_VAL from EMR.T_REC t