sql >> データベース >  >> RDS >> Oracle

2つの順序付けられていないデリミントリストの違い(Oracle)

    APEX_UTILにアクセスできる場合 、文字列を解析して配列に変換し、コレクションに変換してから、MULTISET EXCEPTを使用できます。 (これはマイナスと同じですが、コレクション用です):

    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;
    

    結果:

    g3
    

    10gで導入されたMULTISET演算子の詳細: http:// www.oracle-developer.net/display.php?id=303




    1. SQL SELECT構文–DBMSによってリストされます

    2. jQueryリモートメソッドの使用を検証して、ユーザー名がすでに存在するかどうかを確認します

    3. SQL Serverのすべてのデータベースのすべてのテーブルを単一の結果セットに一覧表示するにはどうすればよいですか?

    4. インデックス付きビューと統計