Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Oracle:Cách nhanh nhất trong PL / SQL để xem giá trị có tồn tại hay không:Danh sách, VARRAY hoặc Bảng tạm thời

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ử.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để thêm các số 0 ở đầu vào ngày tháng trong Oracle?

  2. Chuyển đổi dấu thời gian trong Oracle cho định dạng YYYY-MM-DD HH:MM:SS

  3. Cách tạo cột không rỗng trong dạng xem

  4. Khi nào một QUERY CHUẨN BỊ không thành công trong PRO C?

  5. Oracle ORA-00979 - không phải là biểu thức GROUP BY