Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Oracle:Cara Tercepat di PL/SQL untuk Melihat apakah Ada Nilai:Daftar, VARRAY, atau Tabel Temp

Apakah myGroup adalah varray? Jika itu adalah string, coba sesuatu seperti:

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

Sulit untuk mengikuti batasan yang sedang Anda kerjakan ... Jika memungkinkan, lakukan semuanya di dalam sql dan itu akan lebih cepat.

Pembaruan:

Jadi jika Anda sudah berada di unit plsql dan ingin tetap berada di unit plsql maka logika di atas akan seperti ini:

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;

jika ini sendiri dalam satu lingkaran, buat daftar sekali sebagai:

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;

Coba juga instr yang mungkin lebih cepat dari like:

  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;

Saya tidak tahu apakah ini lebih cepat dari solusi lain yang disebutkan (kemungkinan besar), ini adalah sesuatu yang lain untuk dicoba.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle 12c - apakah indeks pada kolom 'angka' berkinerja lebih cepat daripada indeks pada kolom 'varchar'?

  2. Bagaimana cara mengatur LINESIZE dan PAGESIZE dengan variabel substitusi?

  3. Oracle::occi::ResultSet::next() membuat crash program saya

  4. Bagaimana cara mengatasi java.lang.ClassNotFoundException:Oracle.jdbc.driver.OracleDriver saat runtime?

  5. Dapatkan RowId dari QueryChangeDescription