zoukankan      html  css  js  c++  java
  • oracle 自定义比较函数

    1>自定义比较函数,targetVal的值为字符串,例如:“>=90”,"2~8"等范围格式,dataVal值为字符串。

    create or replace function compare1(targetVal in varchar2,
                                        dataVal   in varchar2) return integer is
      v_Result      integer;
      dataVal_int   number;
      targetVal_int number;
      v_targetVal   varchar2(200);
      v_dataVal     varchar2(200);
      v_flag        boolean;
      v_index       integer;
    begin
      v_flag      := true;
      v_targetVal := replace(targetVal, ' ');
      v_dataVal   := replace(dataVal, ' ');
      dataVal_int := to_number(v_dataVal);
      if instr(v_targetVal, '>=') > 0 then
        v_targetVal   := replace(v_targetVal, '>=');
        targetVal_int := to_number(v_targetVal);
        v_flag        := dataVal_int >= targetVal_int;
      elsif instr(v_targetVal, '>') > 0 then
        v_targetVal   := replace(v_targetVal, '>');
        targetVal_int := to_number(v_targetVal);
        v_flag        := dataVal_int > targetVal_int;
      elsif instr(v_targetVal, '<=') > 0 then
        v_targetVal   := replace(v_targetVal, '<=');
        targetVal_int := to_number(v_targetVal);
        v_flag        := dataVal_int <= targetVal_int;
      elsif instr(v_targetVal, '<') > 0 then
        v_targetVal   := replace(v_targetVal, '<');
        targetVal_int := to_number(v_targetVal);
        v_flag        := dataVal_int < targetVal_int;
      elsif instr(v_targetVal, '~') > 0 then
        v_index := instr(v_targetVal, '~');
        v_flag  := dataVal_int <= to_number(substr(v_targetVal, v_index + 1)) and
                   dataVal_int >=
                   to_number(substr(v_targetVal, 1, v_index - 1));
      elsif instr(v_targetVal, '=') > 0 then
        v_targetVal   := replace(v_targetVal, '=');
        targetVal_int := to_number(v_targetVal);
        v_flag        := dataVal_int = targetVal_int;
      elsif instr(v_targetVal, '=') = 0 then
        targetVal_int := to_number(v_targetVal);
        v_flag        := dataVal_int = targetVal_int;  
      end if;
      if v_flag then
        v_Result := 1;
      else
        v_Result := 0;
      end if;
      return(v_Result);
    exception
      when others then
        return 1;
    end compare1;

     程序员的基础教程:菜鸟程序员

  • 相关阅读:
    使用简单的反射技术重构组合查询串功能
    沤血分享之:使用Opera浏览器技巧全集
    项目中用到的RE分析
    关于调用新浪微博与腾讯微博
    正则 (?i,m,s,x,g)
    求职路 第二章 深圳篇
    12320平台架构及部署
    网站会员密码
    求职路 第二章 技术篇
    TFS故障一二
  • 原文地址:https://www.cnblogs.com/guohu/p/4173287.html
Copyright © 2011-2022 走看看