加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

oracle – “安全”TO_NUMBER()

发布时间:2020-12-12 14:14:15 所属栏目:百科 来源:网络整理
导读:SELECT TO_NUMBER('*') FROM DUAL 这显然给了我一个异常ORA-01722:无效的数字。 有没有办法“跳过”它,并获得0或NULL? 整个问题:我有NVARCHAR2字段,其中包含数字,而不是几乎; – )(像*),我需要从列中选择最大的数字。 是的,我知道这是一个可怕的设计
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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读