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.