Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Perbedaan antara dua daftar yang dibatasi tidak berurutan (Oracle)

Jika Anda memiliki akses ke APEX_UTIL , Anda dapat mengurai string menjadi array, mengonversinya menjadi koleksi, lalu menggunakan MULTISET EXCEPT (yang sama dengan MINUS tapi untuk koleksi):

SET SERVEROUT ON
DECLARE
  TYPE set_t IS TABLE OF varchar2(100);
  listA APEX_APPLICATION_GLOBAL.vc_arr2;
  listB APEX_APPLICATION_GLOBAL.vc_arr2;
  excpt set_t;
  FUNCTION to_set_t (arr IN APEX_APPLICATION_GLOBAL.vc_arr2)
    RETURN set_t IS
    rset set_t := set_t();
  BEGIN
    rset.EXTEND(arr.COUNT);
    FOR i IN 1..arr.COUNT LOOP
      rset(i) := TRIM(arr(i));
    END LOOP;
    RETURN rset;
  END;
BEGIN
  -- parse lists into arrays
  listA := APEX_UTIL.string_to_table('a1, b4, g3, h6, t8, a0',',');
  listB := APEX_UTIL.string_to_table('b4, h6, a0, t8, a1',',');
  -- convert arrays to collections, then do the minus
  excpt := to_set_t(listA) MULTISET EXCEPT to_set_t(listB);
  -- display the results
  FOR i IN 1..excpt.COUNT LOOP
    DBMS_OUTPUT.put_line(excpt(i));
  END LOOP;
END;

Hasil:

g3

Info lebih lanjut tentang operator MULTISET, yang diperkenalkan di 10g:http:// www.oracle-developer.net/display.php?id=303




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Praktik terbaik untuk menyimpan kata sandi di skrip shell / Perl?

  2. Temukan rata-rata id dalam sebulan

  3. customer.pk_name bergabung dengan transaction.fk_name vs. customer.pk_id [serial] bergabung dengan transaction.fk_id [integer]

  4. Oracle setara dengan SQL Server/Sybase DateDiff

  5. Oracle:Cara efisien memilih baris menggunakan daftar kunci