如何知道oracle中的字段类型是不是可以转换成数值类型? 因为表中的字段全部是varchar2类型了,现在我想知道这个字段的数据能不能转化成int类型(不能用for循环查出所以数据然后去判断)。高手们帮帮忙!!

解决方案 »

  1.   

    用正則表達式來判斷吧
    select count(1) from your_table
    where regexp_like(your_column, '[+-]?[0-9]+');
    這個只是粗略地判斷,如果要精確到int的最大值和最小值的情況,要另外再寫一個好的正則表達式。
      

  2.   


    具体怎么写啊 我oracle很菜的。。
      

  3.   

    select length(replace(translate(字段,'123456789','000000000'),0,null)) from dual;
    如果长度为0可以转为数字,否则不可以转为数字.
      

  4.   


    nvl(translate(col,'#0123456789','#'),0)=0
      

  5.   

    select length(replace(translate(COUNTNUM,'123456789','000000000'),0,null)) from testbook;
    我这样写不行,查出来由10条记录,但是每条都是空
      

  6.   

    哦,那你用9楼的看看.length(null)的时候值是null...
      

  7.   

    我用distinct去重了。 我开始是用程序循环判断的,现在用sql的去重好多了。。