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;

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

  • 相关阅读:
    ROXFiler 2.6
    ubuntu下lxr的运用
    NTFS3G-Linux 的 NTFS 驱动步骤
    Songbird 0.2.5 Final
    ePDFView:一个轻量的 PDF 文档阅读东西
    Gmail Notifier:又一个 Gmail 邮件通知法式
    Hybrid Share-文件分享软件
    Dolphin:KDE 中的文件管理器
    文泉驿点阵宋体 0.8(嬴政)正式公布
    KDE 4 Kludge 发布宣布
  • 原文地址:https://www.cnblogs.com/guohu/p/4173287.html
Copyright © 2011-2022 走看看