oracle FIND_IN_SET函數

來源:互聯網
上載者:User

標籤:arch   --   str   欄位   迴圈   dex   判斷   存在   try   

create or replace FUNCTION FIND_IN_SET(piv_str1 varchar2, piv_str2 varchar2, p_sep varchar2 := ';')    

RETURN NUMBER IS      

  l_idx    number:=0; -- 用於計算piv_str2中分隔字元的位置  

  str      varchar2(500);  -- 根據分隔字元截取的子字串  

  piv_str  varchar2(500) := piv_str2; -- 將piv_str2賦值給piv_str  

  res      number:=0; -- 返回結果  

  loopIndex number:=0;

BEGIN  

-- 如果piv_str中沒有分割符,直接判斷piv_str1和piv_str是否相等,相等 res=1  

IF instr(piv_str, p_sep, 1) = 0 THEN  

   IF piv_str = piv_str1 THEN   

      res:= 1;  

   END IF;  

ELSE  

-- 迴圈按分隔字元截取piv_str  

LOOP  

    l_idx := instr(piv_str,p_sep);  

     loopIndex:=loopIndex+1;

-- 當piv_str中還有分隔字元時  

      IF l_idx > 0 THEN  


   -- 截取第一個分隔字元前的欄位str  

         str:= substr(piv_str,1,l_idx-1);  

   -- 判斷 str 和piv_str1 是否相等,相等 res=1 並結束迴圈判斷  

         IF str = piv_str1 THEN   

           res:= loopIndex;  

           EXIT;  

         END IF;  

        piv_str := substr(piv_str,l_idx+length(p_sep));  

      ELSE  

   -- 當截取後的piv_str 中不存在分割符時,判斷piv_str和piv_str1是否相等,相等 res=1  

        IF piv_str = piv_str1 THEN   

           res:= loopIndex;  

        END IF;  

        -- 無論最後是否相等,都跳出迴圈  

        EXIT;  

      END IF;  

END LOOP;  

-- 結束迴圈  

END IF;  

-- 返回res  

RETURN res;  

END FIND_IN_SET;  


使用方法:select FIND_IN_SET('4','1;2;3;4') from dual;

                 select ENG_NAME,INDUSTRY_SECTOR from HKY_ENG he WHERE FIND_IN_SET('化工石化醫藥',he.INDUSTRY_SECTOR) >0;

oracle FIND_IN_SET函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.