遇到一个问题,请大家帮忙:
只用SQL语句,如何判断CHAR(10)字段里的数据,是否全为数字?

解决方案 »

  1.   

    --全是数字的:
    select * from 你的表 where translate(你的列,'0123456789',' ')='';
      

  2.   

    截位该字段并用ASCII()函数判断是否属于0~9内的ASCII码
      

  3.   

    如果你是8i:create or replace function contains(p_str in varchar2)
    return number
    as
      w_pos number;
    begin
      for i in 1..length(p_str) loop
        w_pos := instr('0123456789',substr(p_str,i,1));
        if w_pos=0 then
          return 0;
        end if;
      end loop;
      return 1;
    end;
    /--所有为数字的:
    select * from 表 where contains(列)=1;
      

  4.   

    select * from 你的表 where translate(你的列,'0123456789',' ')='';
    是最好的方法
      

  5.   

    pengdali(大力 V3.0)函数可以的。
      

  6.   

    good!!
    replace(col_name,'0123456789',' ')=' '
      

  7.   

    sorry,修改以下;
    trim(ltrim(rtrim(replace(col_name,'0123456789',' ')))) is null
      

  8.   

    创建一个函数:CREATE OR REPLACE  FUNCTION is_number(p_str in varchar2)
    return varchar2
    as
      v_num number;
    begin
      select to_number(v_str) into w_pos from dual;
      return p_str;
    exception
      when others then return '不是数字';
    end;然后用SQL调用它:select colname,is_number(colname) from table_name;
      

  9.   

    将select to_number(v_str) into w_pos from dual;中的w_pos改为v_num,v_str改为p_str,呵呵,抱歉
      

  10.   

    不好意思,可能是我没说明白,我是想用纯SQL语句进行判断,不用函数.而且数据不一定是10位的,有可能是'12AB2','1','3DF'.....
      

  11.   

    不懂啊,怎么算“纯SQL语句”。为什么要做这个限制呢?