• 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;

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

  • 相关阅读:
    鼠标划过出现子菜单
    让dedecms(织梦)的list标签支持weight排序
    win7 64位无法安装网络打印机
    点击外部链接, 让iframe父页面也跟着显示
    C/C++指针(转)
    OO与设计模式的原则、目标 (转)
    页面添加QQ
    Windows Form 中的鼠标事件
    深入浅出C#消息
    初始化列表
  • 原文地址:https://www.cnblogs.com/guohu/p/4173287.html
Copyright © 2020-2023  润新知