Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Różnica między dwiema nieuporządkowanymi, wykreślonymi listami (Oracle)

Jeśli masz dostęp do APEX_UTIL , możesz przeanalizować ciągi w tablicę, przekonwertować je na kolekcje, a następnie użyć MULTISET EXCEPT (czyli to samo co MINUS, ale w przypadku kolekcji):

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;

Wynik:

g3

Więcej informacji o operatorach MULTISET, które zostały wprowadzone w 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. Oracle ExecuteNonQuery zawiesza się na ASP.Net

  2. wykonał procedurę składowaną Oracle z serwera sql przy użyciu funkcji otwartego zapytania

  3. Funkcja BITAND() w Oracle

  4. Jak przekonwertować CLOB na BLOB w Oracle?

  5. Walidacja działa we wszystkich wierszach po przejściu na kartę Oracle ADF