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
会先转为数字再做计算
这样'2010'-'2000'和2010-2000就没区别了
返回值都是number类型字符串只是在做>、<需要比较注意
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