MyGroup có phải là một varray không? Nếu nó là một chuỗi, hãy thử một cái gì đó như:
select 1
from dual
where 'abc,NONE,def' like '%,NONE,%'
Thật khó để tuân theo những ràng buộc mà bạn đang làm việc ... Nếu có thể, hãy làm mọi thứ bên trong sql và nó sẽ nhanh hơn.
Cập nhật:
Vì vậy, nếu bạn đã ở trong một đơn vị plsql và muốn ở trong một đơn vị plsql thì logic ở trên sẽ diễn ra như sau:
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;
nếu bản thân nó nằm trong một vòng lặp thì hãy lập danh sách một lần như sau:
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;
Ngoài ra, hãy thử hướng dẫn có thể nhanh hơn như sau:
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;
Tôi không biết liệu cách này có nhanh hơn các giải pháp khác đã đề cập hay không (đây là một cơ hội tốt), đó là một thứ khác để thử.