oracle判斷一個字符串中是否包含另外一個字符串


select * from a where instr(a,b)>0;

用於實現B字段是A字段中的某一部分的時候,要論順序或者要相鄰的字符。

如果想要不論順序或者不相鄰的字符時,定義函數可以實現:

select * from a where instr(a,b)>0;

這個只能實現B字段是A字段中的某一部分的時候。 如果想要不論順序或者不相鄰的字符時,定義函數可以實現

 

create or replace function checks(v_a varchar2,v_b varchar)
  return number
  as
     num number;
     cou number;
  begin
     num := -1;
     cou:=0;
     for i in 1..length(v_b) loop
        if instr(v_a,substr(v_b,i,1))>0 then
     cou:=cou+1;
        end if;
     end loop;
     if cou=length(v_b) then
     return cou;
     end if;
     dbms_output.put_line(cou||'    '||length(v_b));
  return num;
  end;
 
結果:
 SQL> select * from a;
 
A          B
 ---------- ----------
 asdf       sd
 asdf       ad
 asdf       df
 asdf       asdf
 
SQL> select * from a where checks(a,b)>0;
 
A          B
 ---------- ----------
 asdf       sd
 asdf       ad
 asdf       df
 asdf       asdf
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM