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;

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

  • 相关阅读:
    Day2----Python常用模块
    Day1--Python基础知识
    AES加密
    MOS管基本MOS管基本认识(快速入门)认识(快速入门)
    printf定义宏方便调试
    ESP8266上电透传与手动透传AT指令设置笔记
    三态门与高阻态
    步进电机原理
    关于stm32 MCU申请动态内存malloc的认识
    高低位数据分离的两种方法
  • 原文地址:https://www.cnblogs.com/guohu/p/4173287.html
Copyright © 2011-2022 走看看