Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle:najszybszy sposób w PL/SQL, aby sprawdzić, czy istnieje wartość:lista, VARRAY lub tabela temp

Czy myGroup to varray? Jeśli jest to ciąg znaków, wypróbuj coś takiego:

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

Trudno jest dostosować się do ograniczeń, z którymi pracujesz... Jeśli to w ogóle możliwe, zrób wszystko w sql, a będzie szybciej.

Aktualizacja:

Więc jeśli jesteś już w jednostce plsql i chcesz pozostać w jednostce plsql, powyższa logika wyglądałaby mniej więcej tak:

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;

jeśli to samo jest w pętli, utwórz listę raz jako:

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;

Spróbuj także instr, który jest prawdopodobnie szybszy niż:

  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;

Nie mam pojęcia, czy jest to szybsze niż inne wymienione rozwiązania (ma duże szanse), to jest coś innego do wypróbowania.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Używanie where in na wiosnę-jdbc

  2. Połącz się z PHP z bazą danych Oracle za pomocą portfela Oracle

  3. Data i godzina Oracle bez czasu letniego za pośrednictwem JDBC

  4. Czy Oracle obsługuje wyszukiwanie pełnotekstowe?

  5. Parametr wejściowy Oracle PL\SQL Null Warunek WHERE