SELECT TO_NUMBER('*') FROM DUAL
这显然给了我一个例外:
ORA-01722: 无效数字
有没有办法"跳过"它并获得0
或者NULL
反而?
整个问题:我有NVARCHAR2
字段,其中包含数字而不是几乎;-)(例如*
),我需要从列中选择最大的数字。
是的,我知道这是一个糟糕的设计,但这就是我现在需要的……:-S
UPD:
对于我自己来说,我已经解决了这个问题
COALESCE(TO_NUMBER(REGEXP_SUBSTR(field, '^\d+')), 0)
答案
我找不到比这更好的东西了:
function safe_to_number(p varchar2) return number is
v number;
begin
v := to_number(p);
return v;
exception when others then return 0;
end;