Is myGroup een varray? Als het een string is, probeer dan iets als:
select 1
from dual
where 'abc,NONE,def' like '%,NONE,%'
Het is moeilijk om de beperkingen te volgen waaronder u werkt... Als het enigszins mogelijk is, doe dan alles binnen sql en het zal sneller zijn.
Bijwerken:
Dus als je al in een plsql-eenheid zit en in een plsql-eenheid wilt blijven, dan zou de bovenstaande logica ongeveer als volgt gaan:
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;
als dit zelf in een lus zit, maak de lijst dan één keer als:
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;
Probeer ook instr die waarschijnlijk sneller is dan:
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;
Ik heb geen idee of dit sneller is dan de andere genoemde oplossingen (de kans is groot), het is iets anders om te proberen.