Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle:Най-бързият начин в PL/SQL да видите дали съществува стойност:списък, VARRAY или временна таблица

myGroup варрей ли е? Ако е низ, опитайте нещо като:

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

Трудно е да следвате ограниченията, при които работите... Ако изобщо е възможно, правете всичко вътре в sql и ще бъде по-бързо.

Актуализация:

Така че, ако вече сте в единица 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;

Също така опитайте instr, който вероятно е по-бърз от като:

  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. LINQPad - Низ за свързване към моята Oracle DB

  2. PLS-00172:твърде дълъг низов литерал се генерира грешка, докато се задава голяма стойност на низ на CLOB

  3. IO грешка:Времето за изчакване на четенето на сокета изтече. Какви са причините?

  4. мутиране, тригер/функция може да не го види - грешка по време на изпълнение на тригер

  5. Грешка в Oracle при добавяне на ненулеви колони по подразбиране