Är myGroup en varray? Om det är en sträng prova något i stil med:
select 1
from dual
where 'abc,NONE,def' like '%,NONE,%'
Det är svårt att följa de begränsningar du arbetar under... Om det är möjligt, gör allt inuti sql och det kommer att gå snabbare.
Uppdatering:
Så om du redan är i en plsql-enhet och vill stanna i en plsql-enhet så skulle logiken ovan se ut ungefär så här:
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;
om detta i sig är i en loop, gör listan en gång som:
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;
Prova också instr som förmodligen är snabbare än som:
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;
Jag har ingen aning om det är snabbare än de andra lösningarna som nämns (det har en god chans), det är något annat att prova.