oracle报无效数字,请问我怎么查出来哪个数值有问题?

丰富的分地方的 2015-06-11 11:16:21
今天查张表,有个字段是varchar2,但是里面存的是金额类的数据(如123.21),to_number发现报无效的数字,请问我怎么查找不是金额的字符串呢?

...全文
7576 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
IceIsabel 2015-06-12
  • 打赏
  • 举报
回复
用正则表达式regexp_like过滤一下
0808xyj 2015-06-12
  • 打赏
  • 举报
回复

CREATE OR REPLACE FUNCTION isnumeric(str IN VARCHAR2)
    RETURN NUMBER
IS
    v_str FLOAT;
BEGIN
    IF str IS NULL
    THEN
       RETURN 0;
    ELSE
       BEGIN
          SELECT TO_NUMBER (str)
            INTO v_str
            FROM DUAL;
       EXCEPTION
          WHEN INVALID_NUMBER
          THEN
             RETURN 0;
       END;
       RETURN 1;
    END IF;
END isnumeric;
select * from table_name where isnumeric(column_name) = 0
小灰狼W 2015-06-12
  • 打赏
  • 举报
回复
引用 2 楼 IceIsabel 的回复:
用正则表达式regexp_like过滤一下
where not regexp_like(字段名,'^[[:digit:]]+\.{0,1}[[:digit:]]*$')
binsweet 2015-06-12
  • 打赏
  • 举报
回复
加一个and条件 rownum<100 ,如果通过,说明数据不在前100条,然后改数字,后面你懂的

17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧