select  star_char - end_char into  new_int  from dual;
star_char  varchar2 类型 值为 2010
end_char  varchar2 类型 值为 2000new_int   类型 为 int    
这个 能赋值 吗  如果能的话 new_int 的 值是 个数字类型的 但是值为 10   这样 说的 对 吗

解决方案 »

  1.   

    用减号连接2个字符串
    会先转为数字再做计算
    这样'2010'-'2000'和2010-2000就没区别了
    返回值都是number类型字符串只是在做>、<需要比较注意 
      

  2.   

    declare
      star_char varchar2(10) := '910';
      end_char varchar2(10) := '2000';
      new_int  number(4) := 0;
    begin
      select to_number(star_char) - to_number(end_char)
        into new_int from dual;
      dbms_output.put_line('new_int:'||new_int);
      if star_char < end_char then  --如果是这字符串比较,即把'9'先跟'2'比,9大,所以star_char大
        dbms_output.put_line('star_char is smaller');
      else
        dbms_output.put_line('end_char is smaller');
      end if;  if to_number(star_char) < to_number(end_char) then--如果是数值比较,很明显end_char大
        dbms_output.put_line('star_char is smaller');
      else
        dbms_output.put_line('end_char is smaller');
      end if;
    end;
    输出结果是:
    new_int:-1090
    end_char is smaller
    star_char is smaller