存储成char或varchar2就可以了,干吗还要转换

解决方案 »

  1.   

    to gaobh(^_^) 
    要比较IP大小呀。
      

  2.   

    我写了一个函数计算ip的总和,仅供参考
    create or replace function fun_ip(str_ip in varchar2)
    return number
    is
    dec_sum      number;
    dec_ip                number;
    dec_ip_sum            number;
    dec_cnt               number;err_ip_length         exception;
    begin
         
         if str_ip is null or 
            length(str_ip) > 13
            then
            raise err_ip_length;
         end if;
         
          dec_ip_sum := 0; 
          dec_cnt    := 1;
              
          dec_ip := to_number(length(replace(str_ip,'.',''))); 
          
          for for_ln in 1..dec_ip
          loop
              dec_ip_sum := dec_ip_sum + to_number(substr(replace(str_ip,'.',''),dec_cnt,1));
              dec_cnt := dec_cnt + 1;
              exit when dec_cnt > dec_ip;   
          end loop;       dec_sum := dec_ip_sum;
          return dec_sum;exception
          when err_ip_length then
               dec_sum := 0;
               return dec_sum;
               
               when others  then
                    dec_sum := -1;
                    return dec_sum;
               
    end;