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

Rozróżnianie wartości CSV przy użyciu REGEXP_REPLACE w oracle

Możesz używać kolekcji Oracle. CAST() w połączeniu z COLLECT() może agregować wartości do kolekcji zdefiniowanej przez użytkownika, a następnie SET() pozbędzie się duplikatów. Następnie możesz użyć LISTAGG() przekonwertować kolekcję na ciąg znaków.

Konfiguracja Oracle :

CREATE TYPE intlist IS TABLE OF INT;
/

CREATE TYPE stringlist IS TABLE OF VARCHAR2(4000);
/

CREATE TABLE table_name ( ColA NUMBER(5,0), ColB VARCHAR2(20) );
INSERT INTO table_name
  SELECT 1, 'POW' FROM DUAL UNION ALL
  SELECT 2, 'POW' FROM DUAL UNION ALL
  SELECT 1, 'POWPRO' FROM DUAL UNION ALL
  SELECT 1, 'PRO' FROM DUAL UNION ALL
  SELECT 2, 'PRO' FROM DUAL UNION ALL
  SELECT 1, 'PROUTL' FROM DUAL UNION ALL
  SELECT 1, 'TNEUTL' FROM DUAL UNION ALL
  SELECT 1, 'UTL' FROM DUAL UNION ALL
  SELECT 1, 'UTLTNE' FROM DUAL;

Zapytanie :

SELECT ( SELECT LISTAGG( COLUMN_VALUE, ',' )
                  WITHIN GROUP ( ORDER BY COLUMN_VALUE )
         FROM   TABLE( ColA ) ) AS ColA,
       ( SELECT LISTAGG( COLUMN_VALUE, ',' )
                  WITHIN GROUP ( ORDER BY COLUMN_VALUE )
         FROM   TABLE( ColB ) ) AS ColB  
FROM   (
  SELECT SET( CAST( COLLECT( ColA ORDER BY ColA ) AS INTLIST ) ) ColA,
         SET( CAST( COLLECT( ColB ORDER BY ColB ) AS STRINGLIST ) ) ColB
  FROM   table_name
);

Wyjście :

ColA ColB
---- ---------------------------------------
1,2  POW,POWPRO,PRO,PROUTL,TNEUTL,UTL,UTLTNE


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. pobierz wszystkie dane z tabel relacyjnych za pomocą xmlelement w pl/sql

  2. Erlang i jego zużycie pamięci sterty

  3. ORA-00900:nieprawidłowa instrukcja SQL- po uruchomieniu procedury w oracle 10g

  4. czy istnieje funkcja PRODUKTU, taka jak funkcja SUMA w Oracle SQL?

  5. Wkładki Oracle ładowane bezpośrednio przez JDBC?