Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

Oracle:PL/SQL में सबसे तेज़ तरीका यह देखने के लिए कि क्या मूल्य मौजूद है:सूची, VARRAY, या Temp तालिका

क्या MyGroup एक वैरायटी है? अगर यह एक स्ट्रिंग है तो कुछ इस तरह का प्रयास करें:

select 1
  from dual
 where 'abc,NONE,def' like '%,NONE,%'

आप जिन बाधाओं के तहत काम कर रहे हैं उनका पालन करना कठिन है ... यदि संभव हो तो, एसक्यूएल के अंदर सब कुछ करें और यह तेज़ हो जाएगा।

अपडेट करें:

इसलिए यदि आप पहले से ही एक plsql इकाई में हैं और एक plsql इकाई में रहना चाहते हैं तो ऊपर दिया गया तर्क कुछ इस प्रकार होगा:

declare
    gp varchar2(200) := 'abc,def,NONE,higlmn,op';
  begin
    if ','||gp||',' like '%,NONE,%' then
      dbms_output.put_line('y');
    else
      dbms_output.put_line('n');
    end if;
  end;

यदि यह स्वयं एक लूप में है, तो सूची को एक बार इस प्रकार बनाएं:

declare
    gp varchar2(200)  := 'abc,def,NONE,higlmn,op';
    gp2 varchar2(200) := ',' || gp || ',';
  begin
    if g2 like '%,NONE,%' then
      dbms_output.put_line('y');
    else
      dbms_output.put_line('n');
    end if;
  end;

इंस्ट्र भी कोशिश करें जो शायद इस तरह से तेज है:

  declare
    gp varchar2(200) := ',abc,def,NONE,hig,';
  begin
    if instr(gp, ',NONE,') > 0 then
      dbms_output.put_line('y');
    else
      dbms_output.put_line('n');
    end if;
  end;

मुझे नहीं पता कि यह उल्लेख किए गए अन्य समाधानों की तुलना में तेज़ है (यह एक अच्छा मौका है), यह कोशिश करने के लिए कुछ और है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पीएल/एसक्यूएल एक्स दिन पहले तिथि के रूप में कैसे प्राप्त करें?

  2. ओरेकल एसक्यूएल का उपयोग कर एक्सएमएल से अलग से दोहराने योग्य जेसन नोड मान कैसे निकालें?

  3. सीएलओबी और एनसीएलओबी में क्या अंतर है?

  4. हाइबरनेट डेटाबेस से अनुक्रम सूचना प्राप्त नहीं कर सका

  5. मैं tnsname का उपयोग करके चींटी से Oracle डेटाबेस से कैसे जुड़ सकता हूँ?