select SUM(TRIM(FB.FCZ_CZJS))
          from sjcj_fwdjbxx fb
         where fb.fdj_sfzc = '0'
           AND REGEXP_LIKE(FB.FCZ_CZJS, '^[[:digit:]]+$')
这个表达式不就是匹配数字的吗,为什么还是会提示无效数字,我加个条件AND FB.FCZ_CZJS<'1000000000' 后就正常了这个字段的确有错误的数据(带字符)存在,高手指点

解决方案 »

  1.   


    --测试了下,不得报错with sjcj_fwdjbxx AS(
    SELECT  '1fd' FCZ_CZJS  FROM dual UNION ALL 
    SELECT '100' FROM dual UNION ALL
    SELECT '300' FROM dual UNION ALL
    SELECT '2de31' FROM dual UNION ALL
    SELECT 'sdea123' FROM dual
    )
    select SUM(TRIM(FB.FCZ_CZJS))
    from sjcj_fwdjbxx fb
    where
    REGEXP_LIKE(FB.FCZ_CZJS, '^[[:digit:]]+$')SUM(TRIM(FB.FCZ_CZJS))
    -------------------------------
    400
      

  2.   


    没了 就这条SQL单独执行的时候。 太奇怪了 怎么加个AND FB.FCZ_CZJS<'1000000000' 
    就可以了 高人解答啊
      

  3.   

    你把paddy的语句拷过去试试看能执行不?
      

  4.   

    SQL> with sjcj_fwdjbxx AS(
      2  SELECT  '1fd' FCZ_CZJS  FROM dual UNION ALL 
      3  SELECT '100' FROM dual UNION ALL
      4  SELECT '300' FROM dual UNION ALL
      5  SELECT '2de31' FROM dual UNION ALL
      6  SELECT 'sdea123' FROM dual
      7  )
      8  select SUM(TRIM(FB.FCZ_CZJS))
      9  from sjcj_fwdjbxx fb
     10  where
     11  REGEXP_LIKE(FB.FCZ_CZJS, '^[[:digit:]]+$');SUM(TRIM(FB.FCZ_CZJS))
    ----------------------
                       400SQL> 
    没问题啊,应该是表中那个字段的数值的特殊造成的,怎么解决。。
      

  5.   

    难道遇到灵异事件了?
    FB.FCZ_CZJS>='1000000000' 这个条件里的数据有什么特殊的不
      

  6.   


    数据量太大  看不出来由啥特殊的啊
    这个字段的值理应在10000以下,字符串类型
    ORACLE 10g
      

  7.   


    公司上不了QQ。
    哎,上个网都是偷偷的 真无语了,表也太大了 发不了麻烦大家再看看我7楼的问题
    A表中的ID 是主键 B表中的ID 不是主键,有重复值
      

  8.   

    用pl/sql游标循环一下,到报错的地方把数据打印出来看看。
    我现在也想不出怎么回事。